我最近想将为自托管Gitlab实例设置的Gitlab运行程序从项目运行程序(即仅为项目运行作业)迁移为组运行程序(这样它也可以为同一组中的其他项目)。我想保留我刻苦手写的/etc/gitlab-runner/config.toml
设置。
幸运的是,我备份了config.toml
,因为sudo gitlab-runner unregister -t ... -u ...
从config.toml
删除了整个配置。
为了在组而不是项目下注册相同的配置,我必须:
sudo gitlab-runner register \
--non-interactive \
--url <URL HERE>
--registration-token <TOKEN HERE> \
--executor docker \
--docker-image docker:dind \
--paused
进入由此创建的新config.toml
并复制跑步者的个人跑步者令牌。
用我想要的配置覆盖config.toml
。
编辑config.toml
并插入新的个人跑步者令牌。
启动Gitlab运行程序服务(sudo systemctl start gitlab-runner
)。
在Gitlab Web UI中取消暂停跑步者。
即使完成了所有这些操作,Gitlab实例仍会以其在虚拟配置中注册的名称而不是config.toml
中的名称看到跑步者。
尝试将--config
的{{1}}选项完全无效;我认为这只是告诉它在哪里保存配置。它仍然提示我使用新设置,而不是从我指向的gitlab-runner register
中读取。
有关奔跑者注册的Gitlab文档全部写在一个config.toml
命中命令上,并且在命令上包含了很多选项,这些选项实际上在命令行上指定了整个配置。我真的不想手动将我的gitlab-runner register
转换为可以重新构建并重建它的命令行(当然要减去所有注释)。
我不认为这确实是正确的工作流程,可以使用新的项目/组/ Gitlab实例重新注册运行器,或者从保存的配置中创建运行器的副本。我在这里想念什么?如何从现有config.toml
文件创建新的Gitlab运行程序?
答案 0 :(得分:1)
根据我在GitLab文档中发现的内容以及其中存在的一些未解决的问题,没有一种简单的方法可以完成所需的工作。
这是一个描述您想要的东西的问题:
https://gitlab.com/gitlab-org/gitlab-runner/issues/3540
这是我认为GitLab的目标是如何注册跑步者:
https://gitlab.com/gitlab-org/gitlab-ce/issues/40693
我相信您无法从.toml文件中更改的唯一内容是运行程序的名称,也许也不是标签。然后,仅当您注册跑步者时才创建名称。我在某处阅读了一些内容,您可以更改共享跑步者的标签,但现在找不到。
以下是一种变通方法,可以使注册过程更加自动化:
https://gitlab.com/gitlab-org/gitlab-runner/issues/3553#note_108527430
他使用了这个API:
curl --request POST "https://gitlab.com/api/v4/runners" --form "token=<registration-token>" --form "description=test-1-20150125-test" --form "tag_list=ruby,mysql,tag1,tag2"
然后他得到了以下回复:
{"id":401513,"token":"<runner-token>"}
然后,他可以将流道令牌注入到他已经预先制成的.toml文件中。
对您来说,可以为您的组使用注册令牌,然后写下跑步者和标签的描述/名称。然后,您可以重新使用config.toml并仅更改流道令牌,它应该可以工作。
答案 1 :(得分:0)
我们将运行程序配置存储在存储库中以进行恢复。
要恢复跑步,我们:
gitlab-runner
(请参阅https://docs.gitlab.com/runner/install/)/etc/gitlab-runner/config.toml
,并且sudo service gitlab-runner restart
在ubuntu上。到目前为止,此过程非常可靠。
答案 2 :(得分:0)
一个gitlab运行程序可以在多个项目和/或组中注册。这只会将配置附加到/etc/gitlab-runner/config.toml
中(使用sudo)。我们可以执行以下步骤吗?
config.toml
存储传递到gitlab-runner register
的所有配置,包括gitlab-runner register -h
命令下列出的所有环境变量。
我不确定您为什么需要保存config.toml
。
此外,我相信造成混乱的原因之一可能是gitlab-runner-token
VS gitlab-runner-registration-token
。 registration-token
不能在config.toml
内部使用,这可能是您更换后失败的原因。如果您不想使用gitlab-runner register
命令而只是更新config.toml
,请按照上述ans中定义的步骤来获取gitlab-runner-token
,并在config.toml
中使用它。然后,我们可以使用gitlab-runner
和sudo service gitlab-runner stop
sudo service gitlab-runner start
服务