【问题标题】:How to make IF statements add up as an AND operator in gitlab-ci job?如何使 IF 语句在 gitlab-ci 作业中加起来为 AND 运算符?
【发布时间】:2021-03-26 00:18:39
【问题描述】:

我有一个工作模板 .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 gitlab-ci gitlab-ce


    【解决方案1】:

    不幸的是,从 Gitlab 13.9 版开始,这是不可能的。他们最接近在模板中使用 rules 关键字是允许条件来决定是否实际包含包含或不使用 rules (https://gitlab.com/gitlab-org/gitlab/-/issues/216673)。

    如果您是付费客户,与支持人员(或您的销售联系人?不确定)交谈会有所帮助。通常 Gitlab 依赖于社区来构建想要的功能,因为它是开源的,但是当有足够多的付费客户想要一个功能时,他们会直接开发它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-05
      • 1970-01-01
      • 2022-01-12
      • 2012-11-04
      • 1970-01-01
      • 2020-06-08
      • 2018-05-16
      • 2012-02-22
      相关资源
      最近更新 更多