0. 前言
为何使用gitlab ci,而不是jenkins,原因很简单,gitlab简(sha)单(gua)而优(gao)雅(xiao)
因此在尝试jenkins之后,还是决定登上gitlab ci的贼船。gitlab ci相比jenkins有着让人爽爆的yaml语法实现pipeline,不过也需要注意,gitlab ci与jenkins深度绑定,所以也意味着必须要使用gitlab才可以
1. 在CentOS 7下安装gitlab-runner
1.1 找到gitlab上的地址和token
登陆gitlab,选中一个想要构建的项目/项目组
1.2 下载gitlab-runner
打开 https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-ci-multi-runner-linux-amd64 连接,下载相应文件
下载完毕后,将文件上传至服务器
赋予文件运行权限
[root@web01 gitlab-runner]# chmod +x /home/gitlab-runner/gitlab-ci-multi-runner-linux-amd64
1.3 注册runner
官网文档地址为:https://docs.gitlab.com/runner/register/index.html
在CentOS下注册一个Runner
[root@web01 gitlab-runner]# ./gitlab-ci-multi-runner-linux-amd64 register
输入你的 GitLab 实例 URL
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
输入注册Runner所获得的令牌
Please enter the gitlab-ci token for this runner:
输入一个关于Runner的描述,你可以稍后在 GitLab 的用户界面中修改它
Please enter the gitlab-ci description for this runner:
输入与 Runner 相关的标签,你可以稍后在 GitLab 的用户界面中修改
Please enter the gitlab-ci tags for this runner (comma separated):
这里输入标签内容即可,如 mytag
是否运行未标记的构建,默认为false
Whether to run untagged builds [true/false]:
[false]:
是否将运行程序锁定到当前项目,默认为false
Whether to lock Runner to current project [true/false]:
[false]:
输入轮转执行器,这里用shell
Please enter the executor: kubernetes, docker, shell, virtualbox, docker+machine, docker-ssh+machine, docker-ssh, parallels, ssh:
出现以下内容代表注册完成
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
回到之前在gitlab选中的项目/项目组页面,点击设置-CI/CD,如果看到以下内容,则代表已经读取到runner
1.4 创建runner用户
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
1.5 安装并启动服务
[root@web01 gitlab-runner]# ./gitlab-ci-multi-runner-linux-amd64 install --user=gitlab-runner --working-directory=/home/gitlab-runner
[root@web01 gitlab-runner]# ./gitlab-ci-multi-runner-linux-amd64 start
1.6 更换用户
如果觉得使用gitlab-runner角色过于受限(各种无权限),可替换为其他高权限用户,例如root
-
删除gitlab-runner
gitlab-runner uninstall
-
安装并设置–user(例如设置为root)
gitlab-runner install --working-directory /home/gitlab-runner --user root
-
重启gitlab-runner
service gitlab-runner restart
-
验证
ps aux|grep gitlab-runner
如果 – user变为了想要指定的用户,则代表完成了(能力越大责任越大,小心把服务器内容都删了哦 0_0)
/usr/bin/gitlab-ci-multi-runner run --working-directory /home/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --syslog --user root
2. 项目中集成gitlab ci
在项目根目录中创建 .gitlab-ci.yml 文件,配置相应规则后,在push代码的时候,就可以自动触发项目构建了
yaml配置内容的规则说明官方文档地址:https://docs.gitlab.com/ee/ci/yaml/README.html
2.1 简单示例
以下例子为将war生成,并放置到指定的tomcat中
# 提交test分支时触发
test job:
only:
- test
script:
- echo 'test分支' >> /home/hzx/gitlab_ci_dir/log.txt
- git checkout test
- mvn clean package
- pwd >> /home/hzx/gitlab_ci_dir/log.txt
# gitlab-runner在运行时,会在执行的目录下,因此可以使用./的方式定位到新生成的war包,就是这么方便快捷
- cp ./hzx-admin/target/hzx-admin.war /home/hzx/tomcat/apache-tomcat-test-7000/webapps
# tags一定要指定,否则作业会卡住
tags:
- my-tag
# 提交master分支时触发
master job:
only:
- master
script:
- echo 'master分支' >> /home/hzx/gitlab_ci_dir/log.txt
tags:
- my-tag
当上传代码的时候,可以通过查看日志文件,查看是否触发
可以看到,已经触发了构建