前言
gitlab
提供了一个开箱即食的 ci/cd
工具, gitlab-runner
。虽然 gitlab-runner
是自动化的核心,但是因为有 helm
的帮助, 安装起来还是很简单的。
自定义配置
首先,我们需要从 gitlab
官方的 helm
仓库中获取到 gitlab-runner
的配置文件,来做一些自定义配置。
helm inspect values gitlab/gitlab-runner > runner-value.yml
这个配置文件中已经有了很详细的注释,如果还是有地方不清楚的可以到官方仓库去查找资料。
下面就开始来对这个文件进行修改。
gitlabUrl
在第19行左右,这个 gitlabUrl
将被 gitlab-runner
用来与 gitlab
通信。由于我们是在 k8s
中,所以这里我们使用之前给 gitlab
配的 service
的名称:http://gitlab 。
runnerRegistrationToken
紧接着下面25行左右,这个 token
是从 gitlab
中来的。我们通过管理员登录 gitlab
,进到如图所示的位置,复制 token
。
于是我们的 token
就是: kWnEJs-sKT-tCqrB7AM_
cloneUrl
在251行左右,我们也是让 runner
访问 service
去。这里设置:http://gitlab/。
这里这个 runner
不是 gitlab-runner
的pod,而是 gitlab-runner
在执行 ci
脚本前,主动生成的一个新的叫做 runner
的 pod
。由这个 runner pod
来做实际的执行工作。我们在下面将会看看具体的 pod
变化情况。
安装
配置好以后,我们通过下面命令安装:
helm upgrade -if runner-value.yml --namespace gitlab gitlab-runner gitlab/gitlab-runner
这里用到了这些参数
-
upgrade
表示升级, -
-i
表示如果没有就直接安装,所以在没有安装指定包时,install
和upgrade -i
的效果是一样的, -
-f
表示使用制定的value文件
,也就是我们刚才下载下来并修改过的runner-value.yml
, -
--namespace
指定要将包安装到gitlab
这个命名空间下, - 然后是安装的名称,以后操作这个包就需要使用这个名称,
- 最后是远程包的名称。
然后我们来看看现在 pod
的情况
我们看到已经 running
了。
我们在看看 gitlab
后台是什么样子:
已经出现了一条记录了,说明安装成功。
测试
我们使用之前提交的那个测试项目来实验一下。 gitlab-ci
的语法我就不赘述了。直接上代码:
test:
script:
- echo hello gitlab
然后保存到测试项目的根目录下,保存为 .gitlab-ci.yml
文件。
提交项目。
我们来看看项目的 pipline
现在是什么情况:
我们看到正在跑,稍微等一下,就可以看到已经成功了。
下面那个失败的
Auto DevOps
,不用管它,这是gitlab
默认自带的一个迷你ci,把它关掉就好。
成功后,我们点击列表里面绿色小勾,点进去就能看到实际的执行情况。
我们来看看在执行脚本的过程中, gitlab
命名空间下面的变化。
可以看到, gitlab-ruuner
启动了一个新的 runner
来执行我们的脚本,执行完毕后再删除这个 pod
。
总结
到这里, gitlab-runner
就安装成功了。这里面还有一些知识点,比如:
-
gitlab-runner
的type
都是什么意思,我们可以我们刚才安装的gitlab-runner
的type
是share
, -
gitlab-runner
现在没有缓存。
这些问题,我们之后再来研究。