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

时间:2019-02-12 20:38:14

标签: gitlab gitlab-ci gitlab-ci-runner

我最近想将为自托管Gitlab实例设置的Gitlab运行程序从项目运行程序(即仅为项目运行作业)迁移为组运行程序(这样它也可以为同一组中的其他项目)。我想保留我刻苦手写的/etc/gitlab-runner/config.toml设置。

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

为了在组而不是项目下注册相同的配置,我必须:

  1. 使用组的注册令牌以虚拟配置将跑步者注册为暂停状态:
sudo gitlab-runner register \
  --non-interactive \
  --url <URL HERE>
  --registration-token <TOKEN HERE> \
  --executor docker \
  --docker-image docker:dind \
  --paused
  1. 进入由此创建的新config.toml并复制跑步者的个人跑步者令牌。

  2. 用我想要的配置覆盖config.toml

  3. 编辑config.toml并插入新的个人跑步者令牌。

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

  5. 在Gitlab Web UI中取消暂停跑步者。

即使完成了所有这些操作,Gitlab实例仍会以其在虚拟配置中注册的名称而不是config.toml中的名称看到跑步者。

尝试将--config的{​​{1}}选项完全无效;我认为这只是告诉它在哪里保存配置。它仍然提示我使用新设置,而不是从我指向的gitlab-runner register中读取。

有关奔跑者注册的Gitlab文档全部写在一个config.toml命中命令上,并且在命令上包含了很多选项,这些选项实际上在命令行上指定了整个配置。我真的不想手动将我的gitlab-runner register转换为可以重新构建并重建它的命令行(当然要减去所有注释)。

我不认为这确实是正确的工作流程,可以使用新的项目/组/ Gitlab实例重新注册运行器,或者从保存的配置中创建运行器的副本。我在这里想念什么?如何从现有config.toml文件创建新的Gitlab运行程序?

3 个答案:

答案 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)

我们将运行程序配置存储在存储库中以进行恢复。

要恢复跑步,我们:

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

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

答案 2 :(得分:0)

一个gitlab运行程序可以在多个项目和/或组中注册。这只会将配置附加到/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-token VS gitlab-runner-registration-tokenregistration-token不能在config.toml内部使用,这可能是您更换后失败的原因。如果您不想使用gitlab-runner register命令而只是更新config.toml,请按照上述ans中定义的步骤来获取gitlab-runner-token,并在config.toml中使用它。然后,我们可以使用gitlab-runnersudo service gitlab-runner stop

尝试停止并启动sudo service gitlab-runner start服务