GitLab不仅仅只是代码托管的工具,它还集成了CI的功能,通过Gitlab CI Multi Runner工具可以更方便的搭建持续集成环境。
在安装好GitLab之后还需要再安装一个叫gitlab-ci-multi-runner的工具。
PS: 当然了肯定没有Jenkins那么强大,毕竟可用插件太多了。
官方多种安装方式
由于众所周知(墙)的原因,还是推荐Gitlab CI Multi Runner 清华镜像
安装好runner之后就可以使用gitlab-runner命令了,可通过# gitlab-runner help
查看命令帮助,
更多命令详情可以查阅官方文档
好了,让我们来先查看一下服务运行的状态。
# gitlab-runner status
输出以下内容,说明服务运行正常了。
gitlab-runner: Service is running!
还有也可以通过以下命令查看,不过我更喜欢短一点的命令,后面都只使用gitlab-runner了。
# gitlab-ci-multi-runner status
注册一个runner可以使用交互式和非交互式两种方式,默认使用交互式的。
输入以下命令就可以开始交互式注册了,在这之前请确保Gitlab上面已经新建有项目了。
# gitlab-runner register
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/ci):
http://192.168.1.2/ci // 在这里输入gitlab安装的服务器ip/ci 即可
Please enter the gitlab-ci token for this runner:
eaYyokc57xxZbzAsoshT // 这里的token可通过Gitlab上的项目Runners选项查看,在下面贴一张截图
Please enter the gitlab-ci description for this runner:
[E5]: spring-demo // 这里填写一个描述信息,不太重要,看着填吧
Please enter the gitlab-ci tags for this runner (comma separated):
demo // 在这里填写tag信息,多个tag可通过逗号,分割。
Registering runner... succeeded runner=eaYyokc5
Please enter the executor: docker, docker-ssh, parallels, shell, ssh, virtualbox, docker+machine, docker-ssh+machine:
shell // 在这里需要输入runner的执行方式,因为我的Gitlab和runner是安装在同一台服务器上的,直接输入shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
// 出现这样信息表示服务端的配置就已经成功结束了,如果需要使用到自动构建,还需要再添加一个配置文件,下面说说这个。
可通过以下命令进行查看
# gitlab-runner list
Listing configured runners ConfigFile=/etc/gitlab-runner/config.toml
spring-demo Executor=shell Token=387ed6c05fef248d2183f9f45b9cda URL=http://192.168.1.2/ci
也可以直接打开配置文件进行查看
# vim /etc/gitlab-runner/config.toml
concurrent = 1
check_interval = 0
[[runners]]
name = "spring-demo"
url = "http://192.168.1.2/ci"
token = "387ed6c05fef248d2183f9f45b9cda"
executor = "shell"
[runners.ssh]
[runners.docker]
tls_verify = false
image = ""
privileged = false
disable_cache = false
[runners.parallels]
base_name = ""
disable_snapshots = false
[runners.virtualbox]
base_name = ""
disable_snapshots = false
[runners.cache]
如果发现register信息填写错误,或者不再使用了。可通过以下命令进行删除。
- 首先查看已注册过的信息
# gitlab-runner list
Listing configured runners ConfigFile=/etc/gitlab-runner/config.toml
spring-demo Executor=shell Token=387ed6c05fef248d2183f9f45b9cda URL=http://192.168.1.2/ci
# gitlab-runner unregister --url http://192.168.1.2/ci --token 387ed6c05fef248d2183f9f45b9cda
Running in system-mode.
Deleting runner... succeeded runner=387ed6c0
出现上面信息表示删除成功了。
注意:这个操作是不可逆的,为了防止出错可以先备份一下/etc/gitlab-runner/config.toml
配置文件
配置好了runner,想要开始自动构建还需要在项目根目录添加一个.gitlab-ci.yaml文件。
关于.gitlab-ci.yaml文件的配置说明可参考官方文档。
下面贴一下我做测试Demo时使用的,不要笑,很简单只做演示用的。。
.gitlab-ci.yaml
stages:
- build
- deploy
job1:
stage: build
script: "mvn package"
job2:
stage: deploy
script: "mvn tomcat:redeploy -Dmaven.test.skip=truey -e -X"
到这里关于CI持续集成的差不多就说那么多了,当然了还有很多都没说到,这就要看实际的项目需求进行相应的配置了。
总的来说呢,gitlab-runner虽然跟Gitlab集成的比较好,但是功能方面还是有点不如老牌的Jenkins。
不过它对Docker倒是支持的蛮好的,说起来我接触Docker也是挺早的了,它2013年开源,我2014年就开始接触了,并且2015年也在公司服务器上实际部署了,后面有时间再写点关于Docker的吧。不过跳槽后就用的少了,但愿别都忘了好:)。