仅Gitlab:多变量

仅Gitlab:多变量,gitlab,gitlab-ci,Gitlab,Gitlab Ci,是否还有其他方法可以执行多重和变量表达式 比方说 .template1: 仅: 变量: -$flag1==“真” .模板2: 仅: 变量: -$flag2==“真” 工作1: 延伸: -.模板1 -.模板2 脚本:回声“某物” 这将如何评估 这是否只会导致:变量相互覆盖,因此template2是最终结果 或者这将导致一个组合变量,从而成为or语句 仅限: 变量: -$flag1==“真” -$flag2==“真” 有没有办法让它变成一种陈述保留模板系统,并且不使用规则:if,因为使用规则

是否还有其他方法可以执行多重和变量表达式

比方说

.template1:
仅:
变量:
-$flag1==“真”
.模板2:
仅:
变量:
-$flag2==“真”
工作1:
延伸:
-.模板1
-.模板2
脚本:回声“某物”
这将如何评估

  • 这是否只会导致:变量相互覆盖,因此template2是最终结果
  • 或者这将导致一个组合变量,从而成为or语句
仅限:
变量:
-$flag1==“真”
-$flag2==“真”
有没有办法让它变成一种陈述
保留模板系统
,并且不使用
规则:if
,因为使用规则if有它自己的怪癖,在合并请求期间触发多个管道

问题 每当两个作业“合并”时,无论是使用
扩展
还是
锚定
,GitLab都会用另一个部分覆盖一个部分。这些部分实际上并没有合并。在您的例子中,您是从两个作业扩展而来的,因此GitLab将用第二个作业完全覆盖第一个
变量
部分

解决方案 实现所需结果的一种方法是在模板作业中定义变量。您将遇到的问题是两个
变量
部分将相互覆盖。所以

您可以使用
before_script
部分在第二个模板中定义变量。这种方法适用于2个模板的特定情况。如果你需要第三个模板,你可以使用
script
after\u script
,如果你需要更多的模板,你必须使用更高级的方法

.template1:
#我们可以在这里定义变量部分,没问题
变量:
标志1:“正确”
.模板2:
#您不能在这里定义第二个变量部分,因为它将覆盖第一个变量部分
#相反,直接在before脚本部分中定义环境变量
在脚本之前:
-export flag2=“true”
工作1:
延伸:
-.模板1
-.模板2
仅:
变量:
-$flag1==“真”
-$flag2==“真”
脚本:回声“某物”

只是跟进。你解决问题了吗?是的。。使用不同的属性使其工作是有意义的。非常感谢。