19

是否可以在特定的跑步者上运行管道?(不使用标签)

是否可行environments,甚至gitlab runner exec可能?


设想:

有一个已经附加了多个跑步者的现有项目(用于注册跑步者的特定项目令牌)并且有它自己的关联标签(因此也不能更改这些标签)。

我正在添加一个新的跑步者,但需要先对其进行测试以确保它可以正常工作,但我需要强制管道在这台机器上构建,而不更改任何标签或跑步者的特定项目。

4

3 回答 3

5

您有两种机制可以尝试隔离新的运行器进行测试:

  1. 使用标签和私人跑步者附件(已经调用)
  2. 直接在运行器上使用 gitlab-runner exec 动词
  3. canary 运行器仅用于单个构建

选项1

使用标签和私人跑步者附件(已经调用)。

为了进一步扩展这一点......即使在您无法更改标签和诸如此类的严格设置中 - 您始终可以分叉该项目。

在您的新私有分支中,您可以转到 Settings >> CI/CD 并覆盖 General Pipelines Settings 下 Custom CI Configuration Path 中的 .gitlab-ci.yml 文件。这使您可以git cp .gitlab-ci.yml .mycustomgitlab-ci.yml然后简单地git add/ git commit/git push并且您在做生意。

意见:如果你不能使用现有的机制来调整有问题的 runner 上的标签并隔离一个新的分叉项目,这不是一个技术问题,这是一个政治问题。

选项 2

Gitlab-runner 执行....

假设您使用的是 shell gitlab 运行器...

  1. SSH 到您尝试测试的可疑 gitlab 运行器框
  2. 将相关项目的 repo 克隆为 ... 说 .../tmp/myrepo
  3. 执行 Gitlab-Runner:/path/to/gitlab-runner exec shell {.gitlab-ci.yml target}

请参阅https://docs.gitlab.com/runner/commands/#gitlab-runner-exec和有关它的博客https://substrakt.com/how-to-debug-gitlab-ci-builds-locally/

选项 3

Canary 用于单个构建的 gitlab-runner。

您可以启动 gitlab-runner 进程以进行 N 次构建,然后再离线。请参阅:https ://docs.gitlab.com/runner/commands/#gitlab-runner-run-single

... ...这不是零影响,但肯定会限制任何问题的爆炸半径。

于 2018-05-03T00:49:54.833 回答
3

目前在 GitLab 中没有在特定跑步者上构建的解决方案,但有一个针对Sticky Runners的问题,根据里程碑,有望在未来 3-6 个月内发布!


到目前为止,我为在特定运行器上构建项目所做的工作是使用GitLab Runner API,以一种相当老套的方式,遵循以下原则:

  • 获取所有项目运行者
  • 据我所知,我已经部署了最新的跑步者,它将拥有最高的跑步者“数字”
  • 暂停与相关项目相关的所有其他跑步者
  • 触发管道以在最新的运行器上构建
  • 轮询 GitLab API 以获取管道的状态
  • 一旦成功,恢复所有其他跑步者!
  • 如果管道失败,请记住恢复暂停的运行器...
于 2018-01-15T16:35:18.557 回答
0

如果您不想使用标签,另一种选择可能是将跑步者分配给您的特定项目。此选项或标签替代方案是 Gitlab 的设计方式。

于 2017-11-02T08:39:31.770 回答