我在 GitLab 中有一个存储库,其中有两个连接的运行程序。每个跑步者都在不同的服务器上。每个跑步者都有一个
test
标签。
假设我的 CICD 管道只是一项操作:
deploy:
stage: deploy
tags:
- test
script:
- echo 'Deploying...'
如何同时在两个服务器/运行器上运行它?
每个作业都在单个运行器上执行。您不能在多个运行器上运行单个作业。
此外,如果所有跑步者都使用相同的标签,则无法保证哪个跑步者会接手这份工作。如果您创建多个作业,它们可能全部由单个运行器运行。
为了确保作业运行特定的运行器,该运行器需要一个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:
或类似的 技术来压缩配置 来优化配置。
您可以对每个具有不同标签的跑步者使用矩阵和并行。但你的下一个问题将是如何控制这个矩阵的运行时过程。一个特殊的问题是如何忽略当前不可用的跑步者。这两个问题都没有答案,实际上我发现今天这是不可能的。