最近迁移项目使用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 “Example@gmail.com” 生成秘钥
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 很久,不知道什么原因,这是小案例测试发布一台机器,后续需要调整配置批量群发,下次再更新