升级到当前最新版Gitlab之后
在“管理中心”的“CI/CD”--“Runners”下,提示以前的那种注册令牌的方式已经过时了。
点击右上角按钮后,弹出对话框如下:
上图画红框的信息,deprecated是不赞成,反对的意思。就是说注册令牌已经被放弃了,未来将会不支持。暂时还是可以用。
点击蓝色按钮:New Instance Runner
上图我们就在“Run untagged jobs”打勾,然后点击“Create Runner”蓝色按钮。
到了下一步:
上图明确列出了gitlab-runner注册的命令。和以前的15.6.1的版本并没有什么太大不同。
在容器中执行gitlab-runner register操作
由于我么的gitlab-runner是安装在容器里,我们得用docker exec进入每个容器执行register操作
下边的步骤还是和gitlab 16.6.1的版本几乎没有区别。
root@dev-server:~# docker exec -it gitlab-runners_home_2 /bin/bash
root@dc8c15e9d6c4:/# gitlab-runner register
Runtime platform arch=amd64 os=linux pid=46 revision=656c1943 version=16.9.0
Running in system-mode.
There might be a problem with your config based on jsonschema annotations in common/config.go (experimental feature):
jsonschema: '/runners/0/docker/services_limit' does not validate with https://gitlab.com/gitlab-org/gitlab-runner/common/config#/$ref/properties/runners/items/$ref/properties/docker/$ref/properties/services_limit/type: expected integer, but got null
Enter the GitLab instance URL (for example, https://gitlab.com/):
https://gitlab.amihome.cn
Enter the registration token:
glrt-KBwvEu3kukYwC21YDoB6
Verifying runner... is valid runner=KBwvEu3ku
Enter a name for the runner. This is stored only in the local config.toml file:
[dc8c15e9d6c4]: Runner 2
Enter an executor: custom, shell, docker+machine, instance, ssh, parallels, virtualbox, docker, docker-windows, kubernetes, docker-autoscaler:
docker
Enter the default Docker image (for example, ruby:2.7):
docker.amihome.cn/amihome/gitlab/docker-linux-dotnet:8.0
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"
初学者容易费解的是最后一步“Enter the default Docker image”
比如我的机器上,现在有两个容器在运行:
1、gitlab-runners_home_1
2、gitlab-runners_home_2
上述两个容器用于和Gitlab服务器保持“通信”,等着领取“作业”。
当领到“作业”以后,由于我们在“Enter an executor”这里输入的是“docker”,这个时候就会在物理机器上用docker run命令,启动一个容器,这个容器是临时的,执行完“作业”就会销毁。
“Enter the default Docker image”这里的url就是上述docker run时候要使用的image。
这个image就是得自己制作的。我们的项目当前使用.NET 8,所以我们自己制作一个image。
我们另外写一篇文章来介绍制作带.NET 8环境的image。