GitLab:是否可以在特定的跑步者上运行管道?

时间:2017-11-01 16:59:53

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

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

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

情境:

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

我添加了一个新的跑步者,但是需要先测试它以确保它有效,但是我需要强制管道在这台机器上构建,而不需要更改任何标签或跑步者的特定项目。 / p>

3 个答案:

答案 0 :(得分:2)

您有两种机制可以尝试隔离新的跑步者进行测试:

  1. 使用标签和私人跑步者附件(已经叫出)
  2. 直接在跑步者
  3. 上使用gitlab-runner exec动词
  4. canary只为单一构建的跑步者
  5. 选项1

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

    为了进一步扩展这一点...即使在严苛的设置中你也无法改变标签和诸如此类的东西 - 你总是可以寻找项目。

    在新的私人分叉中,您可以转到设置>> CI / CD并覆盖常规管道设置下的自定义CI配置路径中的.gitlab-ci.yml文件。这样,您就可以git cp .gitlab-ci.yml .mycustomgitlab-ci.yml,然后只需git add / git commit / git push即可开展业务。

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

    选项2

    Gitlab-runner exec ....

    假设您正在使用shell gitlab runner ...

    1. SSH到您正在尝试测试的可疑gitlab转轮框
    2. 将有问题的项目的回购克隆到...说... /tmp/myrepo
    3. 执行Gitlab-Runner:/path/to/gitlab-runner exec shell {.gitlab-ci.yml target}
    4. 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

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

答案 1 :(得分:1)

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

到目前为止我为特定跑步者建立一个项目所做的工作是使用GitLab Runner API,以一种相当黑客的方式,按照以下方式:

  • 获取所有项目选手
  • 据我所知,我已经部署了最新的跑步者,那将是最高的跑步者"数字"
  • 暂停与相关项目相关联的所有其他参赛者
  • 触发管道以构建最新的跑步者
  • 轮询GitLab API以获取管道的状态
  • 一旦成功,恢复所有其他选手!
  • 如果管道出现故障,请记得恢复暂停的跑步者......

答案 2 :(得分:0)

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