主要配置如下
image: wangzhiying/ubuntu_ci:v1
mainCode:
tags:
- kxt
only:
- master
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client rsync -y )'
- eval $(ssh-agent -s)
- echo "${SSH_PRIVATE_KEY}" | tr -d '\r' | ssh-add - > /dev/null
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo "${SSH_KNOWN_HOSTS}" > ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
script:
# #调整目录权限,保障这边用户组与服务器端需要的一致
- groupadd www
- useradd -g www -s /sbin/nologin www
- chown -R www:www *
- chmod -R 755 ./ * #星号前面空格自己去掉
#主要同步代码的命令,可以在这里排除一些文件,同步权限,配置服务器的项目路径等。重点参考rsync命令的用法。
- rsync -aztpu --delete --exclude-from ".gitlab-exclude" -e "ssh -p 2221" ./ 服务器账号@服务器地址:目录地址
testCode:
tags:
- kxt_test
only:
- develop
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client rsync -y )'
- eval $(ssh-agent -s)
- echo "${TEST_SSH_PRIVATE_KEY}" | tr -d '\r' | ssh-add - > /dev/null
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo "${TEST_SSH_KNOWN_HOSTS}" > ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
script:
#调整目录权限,保障这边用户组与服务器端需要的一致
- groupadd www
- useradd -g www -s /sbin/nologin www
- chown -R www:www *
- chmod -R 755 ./ * #星号前面空格自己去掉
#主要同步代码的命令,可以在这里排除一些文件,同步权限,配置服务器的项目路径等。重点参考rsync命令的用法。
- rsync -aztpu --delete --exclude-from ".gitlab-exclude" ./ 服务器账号@服务器地址:目录地址
CI配置说明
only 配置决定需要构建的分支,当该分支有变动时会执行流水线操作
比如一些
SSH_PRIVATE_KEY
或者TEST_SSH_PRIVATE_KEY
等属于变量、可在gitlab设置-CI/CD-变量中定义(注意部分变量设置受保护的话只能主分支使用)这里使用到
docker
的镜像image: wangzhiying/ubuntu_ci:v1
这个镜像是我自己基于ubuntu
原始镜像运行命令'which ssh-agent || ( apt-get update -y && apt-get install openssh-client rsync -y )'
后生成,主要目的为了加快构建速度,你也可以使用ubuntu
镜像部分目录或文件不需要同步的话需要在代码目录下新增
.gitlab-exclude
文件、把需要禁止同步的目录或文件写上ssh公钥免密登陆服务器的话参考网址
https://blog.csdn.net/Hannnnnnnnnnnnn/article/details/110196685
(本机对本地也可以,不一定需要本机对远端服务器)配置完成后需要进行
gitlab-Runner
安装