GitLab持续集成
updated: 2021-06-24
GitLab-CI 是一套配合 GitLab 使用的持续集成系统。从V8开始,完全集成到 gitlab 本身,默认在所有项目上启用。
想要启用 GitLab CI,需要具备两样东西:
- 工程根目录下的 .gitlab-ci.yml 文件
- 一个 gitlab-runner
.gitlab-ci.yml 文件中定义了要做哪些工作,gitlab-runner 则是这些工作的执行者。
Runner 的安装与配置
在 GitLab 中,runner 执行你在 .gitlab-ci.yml 定义的 job. Runner 可以是一个虚拟机、一个 VPS、一个裸机或是一个 docker 容器。GitLab 与 Runner 通过 api 交流,所以唯一必备的条件是承载 Runner 的机器具有网络连接。
一个 runner 可以被指定到一个特定的 project或多个 project 服务。如果 一个 runner 为多个 project 服务,则这个 runner 被称为 Shared Runner
关于 Runner 的更多信息可参考 Runner README
以 Mac OS 为例:
下载二进制
sudo curl --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64"
修改权限
sudo chmod +x /usr/local/bin/gitlab-runner
获取 Token
http://qiniu.struggle.fun/3-211210231K4.jpeg
注册 runner
sudo gitlab-runner register
输入 gitlab 服务器地址
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://172.16.1.228/
输入刚才获取的 token
Enter the registration token:
a6PTSWmNKSB8FHpsSzww
输入 runner 的 description
Enter a description for the runner:
[liubodeMacBook-Pro.local]:
输入 runner 的 tag
Enter tags for the runner (comma-separated):
struggle,experiment
选择执行环境
Enter an executor: docker+machine, kubernetes, custom, docker, docker-ssh, ssh, virtualbox, parallels, shell, docker-ssh+machine:
shell
安装并启动服务
cd ~
sudo gitlab-runner install --user=<user>
sudo gitlab-runner start
查看服务运行状态
sudo gitlab-runner status
核验 runner
sudo gitlab-runner verify

编辑 runner
点击上图红框内的编辑按钮,勾选 Run untagged jobs 并保存。

创建 .gitlab-ci.yml 文件
在你的工程根目录下创建一个命名为 .gitlab-ci.yml 的文件。在定义 CI 需要做的工作之前,先了解一下 .gitlab-ci.yml 的内容可以有哪些。
variables:
projectName: "projectName"
before_script:
- export LANG=en_US.UTF-8
- echo $projectName
after_script:
- export LANG=en_US.UTF-8
- echo "complete"
stages:
- clean
- test
- archive
clean:
stage: clean
script:
echo "clean"
test:
stage: test
script:
echo "test"
archive:
stage: archive
script:
echo "archive"
- variables 中定义了一些全局变量
- job 中具体定义了要做什么工作(clean、test、archive 都是 job 的名称,可以与 stages 里的不一致,但里面的 stage 的值 需要与 stages 中的相同)
- stages 中定义了 job 的执行顺序
- before_script 在每个 job 中的 script 执行前都会执行的 script
- after_script 在每个 job 中的 script 执行后都会执行的 script
查看 CI 工作状态
commit、push 代码后,CI 就会开始运行。可以在工程的 Builds 中查看 build 状态。
