Gitlab Runner根据自定义变量在选定的运行程序上运行作业

Gitlab Runner根据自定义变量在选定的运行程序上运行作业,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,我计划根据管道web UI中的变量为跑步者安排作业。我有两个跑步者注册了一个项目,目前他们都在同一台机器上。两个跑步者都有相同的标签,所以与标签的区别也是不可能的 这是我的yaml文件 阶段: -普通的 -具体的 测试1: 阶段:普通 标签: -跑步者 -linux 脚本: -echo$CI\u RUNNER\u说明 -echo“这是在所有跑步者身上跑步” 测试2: 阶段:具体 标签: -跑步者 -linux 脚本:echo“这是在运行程序1上运行的” 仅: 变量: -$num==$CI\u R

我计划根据管道web UI中的变量为跑步者安排作业。我有两个跑步者注册了一个项目,目前他们都在同一台机器上。两个跑步者都有相同的标签,所以与标签的区别也是不可能的

这是我的yaml文件

阶段:
-普通的
-具体的
测试1:
阶段:普通
标签:
-跑步者
-linux
脚本:
-echo$CI\u RUNNER\u说明
-echo“这是在所有跑步者身上跑步”
测试2:
阶段:具体
标签:
-跑步者
-linux
脚本:echo“这是在运行程序1上运行的”
仅:
变量:
-$num==$CI\u RUNNER\u说明
测试3:
阶段:具体
标签:
-跑步者
-linux
脚本:echo“这是在runner 2上运行的”
仅:
变量:
-$num==$CI\u RUNNER\u说明
所以选择发生的变量是“num”。跑步者的描述可以是1或2。 num的默认值为0,根据从管道UI传递的变量,将选择并运行作业。 但是当我使用num 1或2执行测试时,只有test1被执行,这对于所有运行程序都是通用的


这样的实现是可能的,还是因为运行程序在同一台机器上,所以我面临问题?

仅使用
变量
不是选择运行程序的正确方法。现在,您可以从两个运行程序中选择一个,如果运行程序描述不匹配,请尝试不执行作业。即使这样做有效,也没有多大意义,因为你不知道工作是否会被执行。 我建议您为运行程序添加特定的标签,并指定应该在哪个运行程序上运行哪个作业

test2:
阶段:具体
标签:
-跑步者1
脚本:echo“这是在运行程序1上运行的”
测试3:
阶段:具体
标签:
-跑步者2
脚本:echo“这是在runner 2上运行的”
如果要根据UI输入为作业选择runner,可能可以将变量添加到标记部分。老实说,我没有测试这样的解决方案,donno,如果它能工作的话。但仍然需要为跑步者创建特定的标签

标签:
-$tag\u variable\u已从\u UI中选择\u

当前无法使用gitlab执行此操作。正如您在对已接受答案的评论中所指出的,当问题得到解决时,这将可用

也就是说,虽然“被接受的”答案正确地指出“仅仅”是这样做的不正确的方式,但它暗示了另一种同样不起作用的方式

一旦将支持添加到gitlab ci中,这将成为可能。目前,解决方案是提供具有各自标签的独特作业


取决于你到底想完成什么,您可以通过添加作业模板和将重复减少到每个作业的几行来保持代码尽可能干燥。

您不能添加更多标记吗?@makozaki是的,这是可能的,但是我应该如何更改yaml文件,以便gitlab runner也可以根据变量输入选择作业?我刚刚在我的方面进行了测试,并成功了没有工作(我的跑步者在不同的机器上)。我认为这是不可能的。我的想法是,即使我添加了更多的跑步者,也要尽量减少yaml文件中的行数。但是看起来只有使用不同标签的方法才能做到这一点。至于变量到标签的方法,它还没有实现。如果您的步骤中有很多重复的行,那么您可以将它们提取到yaml模板并在每个步骤中加载。