如何使用预先制作的config.toml注册/重新注册Gitlab Runner?

13

最近我想将一个我为自己托管的Gitlab实例设置的Gitlab runner从项目级别(即仅为一个项目执行作业)升级为组级别(这样它也可以为同一组中的其他项目执行作业)。我希望保留我费力手写的/etc/gitlab-runner/config.toml设置。

幸运的是,我备份了config.toml,因为sudo gitlab-runner unregister -t ... -u ...会将整个配置文件从config.toml中删除。

为了在组级别下注册相同的配置而不是项目级别下注册,我需要:

  1. 使用虚拟配置在暂停状态下使用该组的注册令牌注册runner:
sudo gitlab-runner register \
  --non-interactive \
  --url <URL HERE>
  --registration-token <TOKEN HERE> \
  --executor docker \
  --docker-image docker:dind \
  --paused
  1. 进入新创建的 config.toml,并复制runner的单独 runner token。

  2. 用所需的配置覆盖 config.toml

  3. 编辑 config.toml 并插入新的单独 runner token。

  4. 启动Gitlab runner服务 (sudo systemctl start gitlab-runner)。

  5. 在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?


自GitLab Runner 12.2以来,您可以使用“配置模板文件”来实现此目的:https://docs.gitlab.com/runner/register/#runners-configuration-template-file - Justin Lewis
3个回答

15

根据我在GitLab文档和他们的一些未解决问题中所发现的,没有一种简单的方法可以实现你想要的功能。

这里有一个描述类似于你所需功能的问题:

https://gitlab.com/gitlab-org/gitlab-runner/issues/3540

以下是我认为GitLab注册runner的目标:

https://gitlab.com/gitlab-org/gitlab-ce/issues/40693

我认为.tomal文件中唯一不能更改的是runner的名称,也许还有标签。只有在注册runner时才会创建名称。我曾经看到过可以更改共享runner标记的某些内容,但现在找不到了。

以下是使注册过程自动化的解决方法:

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,并仅更改跑步者令牌即可使其正常工作。


0
一个 GitLab Runner 可以在多个项目和/或组中注册。这只会将配置附加到 /etc/gitlab-runner/config.toml(使用 sudo)。我们可以按照以下步骤操作:
  1. 取消注册与“项目”相关联的 GitLab Runner
  2. 注册与“组”相关联的 GitLab Runner
config.toml 存储传递给 gitlab-runner register 的所有配置,包括在 gitlab-runner register -h 命令下列出的任何环境变量。
我不确定为什么需要保存 config.toml
此外,我认为混淆的一个来源可能是 gitlab-runner-tokengitlab-runner-registration-tokenregistration-token 不能在 config.toml 中使用,这可能是您仅替换后失败的原因。如果您不想使用 gitlab-runner register 命令,只需更新 config.toml,然后按照上面的答案中定义的步骤获取 gitlab-runner-token 并在 config.toml 中使用它。然后,我们可以尝试使用 sudo service gitlab-runner stopsudo service gitlab-runner start 停止和启动 gitlab-runner 服务。

-2

我们将跑步者的配置存储在存储库中以进行恢复。

要恢复一个跑步者,我们需要:

  1. 在新节点上安装 gitlab-runner(请参见 https://docs.gitlab.com/runner/install/),
  2. 将存储的配置移动到 /etc/gitlab-runner/config.toml,并且
  3. 重新启动跑步者服务,例如在 Ubuntu 上运行 sudo service gitlab-runner restart

到目前为止,这个过程非常可靠。


创建跑步者时,您仍然需要通过gitlab-runner register进行注册,对吗?这只是用于恢复先前注册的跑步者,是吗? - Vorticity

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接