最近我想将一个我为自己托管的Gitlab实例设置的Gitlab runner从项目级别(即仅为一个项目执行作业)升级为组级别(这样它也可以为同一组中的其他项目执行作业)。我希望保留我费力手写的/etc/gitlab-runner/config.toml
设置。
幸运的是,我备份了config.toml
,因为sudo gitlab-runner unregister -t ... -u ...
会将整个配置文件从config.toml
中删除。
为了在组级别下注册相同的配置而不是项目级别下注册,我需要:
- 使用虚拟配置在暂停状态下使用该组的注册令牌注册runner:
sudo gitlab-runner register \
--non-interactive \
--url <URL HERE>
--registration-token <TOKEN HERE> \
--executor docker \
--docker-image docker:dind \
--paused
进入新创建的
config.toml
,并复制runner的单独 runner token。用所需的配置覆盖
config.toml
。编辑
config.toml
并插入新的单独 runner token。启动Gitlab runner服务 (
sudo systemctl start gitlab-runner
)。在Gitlab web界面中取消暂停的runner。
即使完成了所有这些步骤,Gitlab实例仍然会使用虚拟配置下的runner名称进行识别,而不是使用config.toml
中的名称。
尝试使用--config
选项来进行gitlab-runner register
并没有起作用;我认为那只是告诉它在哪里保存配置。它仍然提示我使用新的设置而不是从config.toml
中读取。
Gitlab文档上有关runner注册的说明都是围绕着一次性的gitlab-runner register
命令编写的,并且带有大量的选项,这些选项在本质上指定了整个命令行的配置。我真的不想手动将我的config.toml
翻译成命令行,然后再转回去重新构建它(当然不包括任何注释)。
我无法相信这真的是重新注册具有新项目/组/Gitlab实例的runner或者从保存的配置中创建runner的正确工作流程。我错过了什么?如何使用现有的config.toml
文件创建新的Gitlab runner?