如何使 IF 语句在 gitlab-ci 作业中添加为 AND 运算符?
How to make IF statements add up as an AND operator in gitlab-ci job?
我有一个工作模板 .deploy_to_staging:template
,其中一些规则由另一个工作 deploy_to_staging_triggered
扩展,加起来另一个规则:
.deploy_to_staging:template:
<<: *job_deploy_definition
stage: deploy
rules:
- if: '$JOB_TRIGGERED == "DEFAULT"'
deploy_to_staging:triggered:
extends: .deploy_to_staging:template
rules:
- if: '$ENV_TRIGGERED == "STAGING"'
执行此操作时,Gitlab 似乎执行了合并,在内部创建了一个如下所示的作业:
deploy_to_staging:mergedJob (following merge)
<<: *job_deploy_definition
stage: deploy
rules:
- if: '$CI_COMMIT_TAG && $JOB_TRIGGERED == "DEFAULT"'
- if: '$ENV_TRIGGERED == "STAGING"'
Gitlab 根据他们的文档按 直到第一次匹配 的顺序评估规则。所以上面的 if 规则就像 OR 运算符一样,在逻辑上等同于这个 IF 语句:
- if : '$JOB_TRIGGERED == "DEFAULT" || $ENV_TRIGGERED == "STAGING"'
但是我希望验证所有条件以便执行作业,即改为使用 AND 运算符:
- if : '$JOB_TRIGGERED == "DEFAULT" && $ENV_TRIGGERED == "STAGING"'
如何实现?
不幸的是,从 Gitlab 版本 13.9 开始,这是不可能的。他们最接近于在模板中使用 rules
关键字是允许条件来决定是否实际包含一个包含或不使用 rules
(https://gitlab.com/gitlab-org/gitlab/-/issues/216673).
如果您是付费客户,与支持人员(或您的销售联系人?不确定)交谈会有所帮助。一般来说,Gitlab 依靠社区来构建所需的功能,因为它是开源的,但是当足够多的付费客户想要一个功能时,他们会直接使用它。
我有一个工作模板 .deploy_to_staging:template
,其中一些规则由另一个工作 deploy_to_staging_triggered
扩展,加起来另一个规则:
.deploy_to_staging:template:
<<: *job_deploy_definition
stage: deploy
rules:
- if: '$JOB_TRIGGERED == "DEFAULT"'
deploy_to_staging:triggered:
extends: .deploy_to_staging:template
rules:
- if: '$ENV_TRIGGERED == "STAGING"'
执行此操作时,Gitlab 似乎执行了合并,在内部创建了一个如下所示的作业:
deploy_to_staging:mergedJob (following merge)
<<: *job_deploy_definition
stage: deploy
rules:
- if: '$CI_COMMIT_TAG && $JOB_TRIGGERED == "DEFAULT"'
- if: '$ENV_TRIGGERED == "STAGING"'
Gitlab 根据他们的文档按 直到第一次匹配 的顺序评估规则。所以上面的 if 规则就像 OR 运算符一样,在逻辑上等同于这个 IF 语句:
- if : '$JOB_TRIGGERED == "DEFAULT" || $ENV_TRIGGERED == "STAGING"'
但是我希望验证所有条件以便执行作业,即改为使用 AND 运算符:
- if : '$JOB_TRIGGERED == "DEFAULT" && $ENV_TRIGGERED == "STAGING"'
如何实现?
不幸的是,从 Gitlab 版本 13.9 开始,这是不可能的。他们最接近于在模板中使用 rules
关键字是允许条件来决定是否实际包含一个包含或不使用 rules
(https://gitlab.com/gitlab-org/gitlab/-/issues/216673).
如果您是付费客户,与支持人员(或您的销售联系人?不确定)交谈会有所帮助。一般来说,Gitlab 依靠社区来构建所需的功能,因为它是开源的,但是当足够多的付费客户想要一个功能时,他们会直接使用它。