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