环境:ubuntu16.04
gitlab服务器:192.168.1.12
runner服务器:192.168.1.11
1.下载
环境:192.168.1.11
1 | cd /usr/local/src |
2.使用gitlab-runner用户创建密钥
1 | su gitlab-runner |
将生成的密钥保存在gitlab有所有项目权限的用户密钥中
3.使gitlab-runner登录其他服务器为免密登录
1 | cd /home/gitlab-runner/.ssh/ |
或
1 | ssh-copy-id -i ~/.ssh/id_rsa.pub www@192.168.1.12 |
4.注册项目
项目token地址:http://gitlab.xxx.com/root/docs/-/settings/ci_cd
gitlab-runner必须使用root权限来注册项目与gitlab关联,非root用户注册可使用sudo提权注册
1 | root@gitlab-runner:/home/gitlab-runner/builds# gitlab-runner register |
第一个参数输入gitlab地址
第二个参数输入要注册项目的token
第三个参数输入gitlab-runner的描述
第四个参数输入gitlab-runner的tag
第五个参数#输入触发gitlab-runner后执行的方式
注册成功以后gitlab-runner的状态会变成绿色
,意为正在运行;
若为红色
,意为停止运行
刚注册完,需等待1分钟左右才会变成绿色,变成绿色以后就可以编写触发脚本了
5.编写触发脚本
在gitlab项目的根目录添加.gitlab-ci.yml
以及shell脚本
- example for .gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12stages:
- master
job 1:
stage: master
only:
- master
script:
- whoami
- ssh -tt www@192.168.1.12 bash /data/www/bin/deploy.sh
tags:
- pro - example for deploy.sh
1 | !/bin/bash |
6.一些说明
第一次触发前,先手动在192.168.1.12上手动拉取代码
由于gitlab部署在内网,无公网ip,因此这里是将gitlab服务器【192.168.1.12】作为项目代码的中转,通过shell脚本同步代码到目标服务器上。
完整流程:
1.本地push代码到gitlab仓库master分支
2.根据gitlab-ci.yml触发runner执行master分支流水线
3.runner会ssh到代码中转服务器即gitlab服务器【192.168.1.12】执行shell脚本,进行拉取、构建、发布操作。
4.流水线任务结束。
也可将gitlab与gitlab-runner部署到同一台服务器上,这样
gitlab-ci.yml
文件中无需ssh命令到中转服务器上,直接进入到指定目录操作即可。