Press "Enter" to skip to content

配置gitlab CI/CD php项目

最近迁移项目使用gitlab 来做php项目发布平台,gitlab 自带CI/CD ,可以部署自动化测试及发布。我们目前使用它测试项目,发布项目代码到远程服务器上面。

首先gitlab 注册账号,注册成功之后,新建项目,然后把本地电脑项目代码push gitlab项目仓库,我们远程服务器是阿里云ECS 7年前购买的,centos 6.8版本 需要更新git版本 更新2.32.0

//删除系统自带git

yum remove git

wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.32.0.tar.xz

cd git-2.32.0

make prefix=/usr/local/git all

make prefix=/usr/local/git install

echo “export PATH=$PATH:/usr/local/git/bin” >> /etc/profile && source /etc/profile

配置gitllab 远程连接阿里云服务器账号,php项目 是www 用户的

先passw www 重置用户www 密码

gitlab 是通过sshd 需要 配置 PasswordAuthentication yes

vim /etc/ssh/sshd_config

修改文件之后 ,然后重启 service sshd restart

然后切换用到www

su www

ssh-keygen -t rsa -C “[email protected]” 生成秘钥

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 配置公钥文件 导入到安全登录密钥里面

cat ~/.ssh/id_rsa //读取私钥文件,密钥我加密了,读取变量是我解密了,使用base64加密解密, 配置 到 giltlab 项目 变量文件里面,配置路径 setings/CI/CD

上面变量项目文件夹,远程主机IP,远程主机用户 也就是www,最后配置.gitlab-ci.yml

before_script:
- apt-get update
- apt-get install -y zip unzip
stages:
    - build
    - deploy

build:
    stage: build
    only:
        - main
    artifacts:
        paths:
            - ./
    script:
        - mkdir -p var && chmod -R 777 var

deploy:
    stage: deploy
    only:
        - main 
    before_script:
        - apt-get update
        - apt-get install -y zip unzip
        - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
        - eval $(ssh-agent -s)
        - ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d)
        - mkdir -p ~/.ssh
        - chmod 700 ~/.ssh
        - (echo "$SSH_PRIVATE_KEY" | base64 -d) > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa
        - ssh-keyscan "$SSH_HOST" >> ~/.ssh/known_hosts
        - chmod 644 ~/.ssh/known_hosts
        - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config   
    script:
        - zip -r $CI_COMMIT_SHA.zip .
        - whoami
        - uname -a
        - ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d)
        - echo "/data/web/$PROJECT_FOLDER/"
        - echo "$SSH_USER @ $SSH_HOST"
        - scp -P22 -p $CI_COMMIT_SHA.zip $SSH_USER@$SSH_HOST:/data/web/$PROJECT_FOLDER/
        - ssh-add <(echo "$SSH_PRIVATE_KEY" | base64 -d)
        - ssh $SSH_USER@$SSH_HOST "cd  /data/web/$PROJECT_FOLDER/ && unzip -q $CI_COMMIT_SHA.zip -d $CI_COMMIT_SHA && rm $CI_COMMIT_SHA.zip && ln -sfn $CI_COMMIT_SHA current && exit"

需要注意 这个文件 gitlab 项目仓库版本分支有关系,有的是master ,有的mian 配置对应分支没有话,会导致loading 很久,不知道什么原因,这是小案例测试发布一台机器,后续需要调整配置批量群发,下次再更新

Leave a Reply

Your email address will not be published. Required fields are marked *