Gitlab-CI持续集成之Runner配置和CI脚本
Gitlab-CI持续集成之Runner配置和CI脚本
⼀、简介
1. 为实现持续集成,需为该项⽬准备以下两样东西:
1)软件集成脚本.(l)
2)⼀台Runner服务器
当然,考虑到集成环境的配置,还需要docker镜像作为载体。
2. 基本流程如下:
1)安装Runner服务器,注册和项⽬对应的Runner Service(后续再说Shared Runner),编写集成脚本;
2)每当push代码,⾃动触发脚本,Gitlab将变动告知Gitlab-CI,CI连接Runner服务器,到关联的Runner Service,Runner负责更新代码到本地,并执⾏集成脚本。
⼆、安装Runner
1. Centos7使⽤yum安装
1)添加yum源
a.官⽅源
1 curl –L package.gitlab/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
b.国内源
cat << EOF >> /pos.po
[gitlab-ci-multi-runner]
name=gitlab-ci-multi-runner
baseurl=mirrors.tuna.tsinghua.edu/gitlab-ci-multi-runner/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=packages.gitlab/gpg.key
EOF
sudo yum makecache
2)安装1.11.2版本
sudo yum install gitlab-ci-multi-runner-1.11.2-1
由于公司Gitlab版本⽬前是8.X,官⽅Gitlab最新是9.0,Runner最新版不⽀持9.0以下版本的Gitlab,因此只能安装该版本。视Gitlab服务器的版本⽽定。
3)Runner⽤户权限
Runner默认会在服务器上创建gitlab-runner⽤户,所有的Runner Service则默认通过该⽤户执⾏集成脚本,因此该⽤户需要较⾼的权限。尤其是使⽤Docker镜像时,必须加⼊docker组。
sudo usermod -aG docker gitlab-runner
2.Ubuntu使⽤apt-get安装
1)添加apt源
curl -L packages.gitlab/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash
2)安装1.11.2版本
sudo yum install gitlab-ci-multi-runner-1.11.2-1
3)Runner⽤户权限(同上)
3.安装包安装
git常用指令下载⼆进制⽂件或相应系统的安装包安装即可,安装包。
三、注册Runner
1.进⼊⾃⼰的Project—>设置Runners
2.查看Specific Runners⾥⾯的url和token
3.在Runner服务器执⾏注册命令
gitlab-runner register --non-interactive \
--url /ci \
--registration-token GWGGXZNxbxabcdMaXZhj9 \    --name Crowd_Job_CI \
--tag-list 172.17.3.126 \
--run-untagged=true \
--executor shell \
--builds-dir /home/gitlab-runner \
--config "/etc/l"
上述命令选项含义(*为必选项):
--url                  项⽬CI地址*
-- registration-token  项⽬⾥刚才看到的token,互相关联的标志*
--name                该Special Runner服务名,便于后台管理(查看、删除、调⽤)*
--tag-list            该Special Runner标签,集成脚本中可以通过指定tag关联
--run-untagged        是否运⾏⽆标签的集成脚本,必须⽤等号
-
-excutor              规定集成脚本执⾏的环境,还可以是docker等*
-- builds-dir          默认该⽂件夹,可以⾃定义项⽬集成初始化的位置
--config              默认配置⽂件,存储注册信息,可以⾃定义不同的配置⽂件
刷新页⾯看到已经注册成功,可以使⽤了。
四、运⾏Runner
假设集成脚本已就绪,那么就需要运⾏Runner
1.使⽤Specific Runner
1)run-single
gitlab-ci-multi-runner run-single \
--url gitlab.sensenets/ci
--token 37fe0fa59e3475e20e24b6e6afc7c3
--executor shell
当然这⾥也可以指定注册时的⼤部分参数,不过⽆论如何url、token(Runner的token,⽽⾮注册时项⽬的token)、executor这三个参数是必须的。
run-single命令很简单的把我们刚才注册的Runner运⾏起来了,如果这个Runner对应的项⽬有更新,这个运⾏的服务就会去执⾏脚本内容。
即便我们不运⾏run-single命令,默认会有⼀个已经运⾏状态的Runner Service,名称就是gitlab-runner,会⾃动执⾏所有注册过的Runner,但同时只能执⾏⼀个任务。
2)run 、install、start
上图说明了Runner的原理:
安装gitlab-ci-multi-runner服务器,相当于⼀个劳务公司的创办,它管理Runner⼯⼈,外包各种项⽬Project。
注册的⽬的是把项⽬和Runner连接起来,因为部分项⽬的Runner可能需要定制。Runner好⽐是⼀个⼯⼈,在劳务中⼼(gitlab-ci-multi-runner)登记合同,供职于我们的Project(但是当他⽐较闲的时候,也可以去其他公司兼职)。
但是对应的RunnerService相当于Runner⼯⼈的管理层,⼀个管理层可以管理⼀个甚⾄多个⼯⼈。劳务公司默认有⼀个公⽤的管理层,服务名就是上⾯所说的gitlab-runner,如果我们不指定管理层,那么劳务公司所有⼯⼈都
被gitlab-runner管理运⾏。这个管理⼈员⽐较弱,⼀次只能管理⼀个项⽬,其他项⽬会等待。
run、run-sigle相当于⼀次性的外包项⽬,⾮常具有针对性。
install则是把⼀个或者⼏个runner包装好,然后start,就是⼀个有着管理服务的⼯⼈体系,随时待命。
当Project更新,触发Runner服务器上的Runner Service(某管理队伍),Runner Service根据⾃⼰的配置信息,和项⽬的需求(tag指定某个⼯⼈),派遣Runner⼯⼈去执⾏Project给予的任务(Job)。
配置信息相当于花名册,不注册仅仅写⼀个花名册是不⾏的,working_dir相当于办公地点。
下⾯安装两个服务并启动:
gitlab-runner install \
-n  "jiukun_self_runner" \
-d "/home/jiukunz" \
-c "/etc/gitlab-runner/config_l" \
-u gitlab-runner
gitlab-runner install \
-n  "jiukun_self2_runner" \
-d "/home/jiukunz" \
-c "/etc/gitlab-runner/config_l" \
-
u gitlab-runner
1 gitlab-runner start -n jiukun_self_runner
2 gitlab-runner start -n jiukun_self2_runner
其中,-n为安装的服务名称,-d为⼯作路径,-c为配置⽂件,-u为执⾏⽤户(服务名称和执⾏⽤户必须指定,配置⽂件和⼯作路径可以使⽤默认路径)
其实,当我们执⾏上述安装命令时,gitlab-ci-multi-runner后台实际是将run命令写⼊/etc/systemd/system/jiukun_self_runner.service⽂件,使之成为⼀个单独的服务:
2.使⽤Shared Runner
使⽤share runner需要管理员权限,联系公司gitlab管理员,获取token。然后使⽤和Special Runner⼀样的⽅法注册成功。
进⼊任意项⽬的Runner页⾯,将看到以下内容:
这⾥我重复注册了两次,可以看到Runner⽆论是名字还是tag都可以重复,但是Runner的token却不相同,实际上区分不同的Runner⼯⼈只需要两样东西就是url和token。当然并不建议进⾏相同命名,不便于管理。
公司所有的项⽬默认都可以使⽤Shared Runner,⽽不需要重复配置。
1)好处:对于⼤多数Runner的配置其实是完全相同的(同样的executor,同样的配置⽂件和⼯作路径,同样的依赖环境),如果每个项⽬都去⼀个个注册不仅⿇烦,⽽且不⽅便迁移,这时可以使⽤shared runner。
2)不⾜:如果⼀个项⽬的编译所需的exector等其他配置(配置⽂件有更多可选配置),并且和其他项⽬需要单独管理,这时最好使⽤Special Runner,并锁定该Runner为项⽬本⾝使⽤,单独管理。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。