-
一台GitLab Server可以有多个Runner
-
GitLab Runner:类似于发布订阅,有一个触发机制,接收到代码提交触发部署到指定服务器
gitlab-runner
官方文档
下载
- docker下载gitlab-runner
docker pull gitlab/gitlab-runner
启动
- 使用本地系统卷挂载启动Runner容器,方便以后快速修改配置
docker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner
注册
注册Runner是将Runner与GitLab实例绑定的过程。
准备:从GitLab项目页面 --> settings --> CI/CD 获得url和token
-
注册Runner。 在docker的gitlab-runner容器中执行命令
gitlab-runner register
docker exec -it gitlab-runner gitlab-runner register
-
输入GitLab实例URL。
# Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/): 输入上图的url
-
输入token。
# Please enter the gitlab-ci token for this runner: 输入上图的token
-
输入Runner的描述。稍后可以在GitLab中的UI中进行更改。
# Please enter the gitlab-ci description for this runner: my-runner
-
输入与Runner关联的标签。稍后可以在GitLab中的UI中进行更改。(注意tag可以有多个,各 tag之间用逗号隔开。如果使用了多个 tag,那么当使用这个 Runner时,在
.gitlab-ci.yml
的 tag字段里也必须明确指明这些 tags)# Please enter the gitlab-ci tags for this runner (comma separated): runner-tag1,runner-tag2
-
将进行注册,提示注册成功或失败
# Registering runner... succeeded runner=r_413jxi
失败长这样
-
输入Runner的executor(运行平台)。runner要运行的平台和方式,因为是用docker安装的所以输入docker
# Please enter the executor: docker, parallels, shell, ssh, docker+machine, custom, docker-ssh, virtualbox, docker-ssh+machine, kubernetes: docker
-
如果选择Docker作为Runner的executor,还需要指定一个默认的 基础镜像 来运行job (这会在
.gitlab-ci.yml
中未指明基础镜像时作为默认基础镜像使用),网上很多人都选的alpine:latest
。如果运行java项目,可以选jdk的镜像# Please enter the default Docker image (e.g. ruby:2.6): alpine:latest
-
再次提示注册成功。若在运行则要重新启动
# Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
- completed! 这样就完成了Runner与CI之间的信息互注册。Runner知道了自己需要操作哪个项目,CI也知道了该runner的存在。接着刷新一下Runners settings界面,就会看到新注册的Runner了。
== 给公司的gitlab配runner。我的runner注册报500,失败了N次,换低版本、不用Docker都报这个错。放弃,不继续写了。==
配置文件
- 这个yml文件就是有3个job组成,依次为build、test、deploy。在执行这个CI流程时候,会分解成3个job依次执行。这里tags: hwy就是指定使用哪个runner来执行这个job,我们也可以执行其他已注册可用的runner。