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

标签 gitlab gitlab-ci gitlab-ci-runner

我最近想将我为自托管 Gitlab 实例设置的 Gitlab 运行器从项目运行器(即仅为项目运行作业)移动到组运行器(因此它也可以为其他项目运行作业)同一组)。我想保留 /etc/gitlab-runner/config.toml我辛辛苦苦手写的设置。
幸运的是我备份了 config.toml , 因为 sudo gitlab-runner unregister -t ... -u ...config.toml 中删除了整个配置.
为了获得在组而不是项目下注册的相同配置,我必须:

  • 使用组的注册 token 以虚拟配置注册处于暂停状态的运行者:
  • sudo gitlab-runner register \
      --non-interactive \
      --url <URL HERE>
      --registration-token <TOKEN HERE> \
      --executor docker \
      --docker-image docker:dind \
      --paused
    
  • 进入新 config.toml这创建并复制了运行者的个人运行者 token 。
  • 覆盖 config.toml用我想要的配置。
  • 编辑config.toml并插入新的个人运行者 token 。
  • 启动 Gitlab 运行器服务 ( sudo systemctl start gitlab-runner )。
  • 在 Gitlab Web UI 中取消暂停运行器。

  • 即使完成了所有这些操作,Gitlab 实例仍然会在虚拟配置中以它注册的名称看到运行器,而不是 config.toml 中的名称。 .
    试用 --config gitlab-runner register 的选项根本没用;我认为这只是告诉它在哪里保存配置。它仍然提示我使用新设置,而不是从 config.toml 中读取。我指着它。
    关于运行者注册的 Gitlab 文档都是围绕一个镜头写的 gitlab-runner register带有大量选项的命令,这些选项基本上在命令行上指定了整个配置。我真的不想翻译我的 config.toml手动进入命令行,然后转身并重建它(当然,减去任何注释)。
    我不敢相信这真的是使用新项目/组/Gitlab 实例重新注册运行器或从保存的配置创建运行器副本的正确工作流程。我在这里想念什么?如何从现有的 config.toml 创建新的 Gitlab 运行器文件?

    最佳答案

    从我可以在 GitLab 文档中找到的内容和他们拥有的一些 Unresolved 问题中,没有一种简单的方法可以做你想做的事。

    这是一个描述类似于您想要的内容的问题:

    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>"}
    

    然后,他可以将 runner-token 注入(inject)到他已经预先制作的 .toml 文件中。

    对您来说,可以使用您的组的注册 token ,然后写入运行者的描述/名称和标签。然后,您可以重新使用您的 config.toml 并且只更改 runner-token,它应该可以工作。

    关于gitlab - 如何使用预制的 config.toml 注册/重新注册 Gitlab Runner?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54658359/

    相关文章:

    linux - 通过私钥进行服务器到服务器的 ssh -- 权限被拒绝(公钥)

    gitlab - sudo gitlab-runner result command not found 但 gitlab-runner 只能运行

    docker - Jenkins & GitLab & Docker 集成失败

    docker - 如何让 gitlab-runner 从指定文件而不是 .gitlab-ci.yml 读取?

    在 .gitlab-ci.yml 上找不到 curl 命令

    python - 查找屏蔽的 CI/CD 变量的值

    Gitlab取其他版本控制源

    postgresql - 在 GitLab CI 中设置 PostgreSQL

    ruby-on-rails - 通过 gitlab ci/docker 运行构建

    git - 如何在本地 pull 远程分支?