在一个 gitlab-ci 管道操作中使用多个运行器

问题描述 投票:0回答:2

我在 GitLab 中有一个存储库,其中有两个连接的运行程序。每个跑步者都在不同的服务器上。每个跑步者都有一个

test
标签。

假设我的 CICD 管道只是一项操作:

deploy:
  stage: deploy
  tags:
  - test
  script:
  - echo 'Deploying...'

如何同时在两个服务器/运行器上运行它?

gitlab continuous-integration gitlab-ci gitlab-ci-runner continuous-deployment
2个回答
2
投票

每个作业都在单个运行器上执行。您不能在多个运行器上运行单个作业。

此外,如果所有跑步者都使用相同的标签,则无法保证哪个跑步者会接手这份工作。如果您创建多个作业,它们可能全部由单个运行器运行。

为了确保作业运行特定的运行器,该运行器需要一个unique标签。要在所有运行器上运行作业,您需要与运行器一样多的作业,每个作业都配置为使用各自的唯一标签。

因此,如果您的每个跑步者都有一个独特的标签,例如

runner-1
runner-2
runner-3
,您可能会这样做:

myjob-dev:
  tags:
    - runner-1
  # ...

myjob-staging:
  tags:
    - runner-2
  # ...

myjob-production:
  tags:
    - runner-3
  # ...

您可以使用

parallel:matrix:
extends:
或类似的 技术来压缩配置 来优化配置。


0
投票

您可以对每个具有不同标签的跑步者使用矩阵和并行。但你的下一个问题将是如何控制这个矩阵的运行时过程。一个特殊的问题是如何忽略当前不可用的跑步者。这两个问题都没有答案,实际上我发现今天这是不可能的。

© www.soinside.com 2019 - 2024. All rights reserved.