【问题标题】:Gitlab CI Trigger pipeline by API with workflow rules带有工作流规则的 API 的 Gitlab CI 触发管道
【发布时间】:2022-01-26 15:14:34
【问题描述】:

我的主管道中有以下工作流规则:

   workflow:
      rules:
        - if: '$CI_MERGE_REQUEST_IID == null'
          when: never
        - if: '$CI_MERGE_REQUEST_TITLE =~ /Draft:/'
          when: never
        - if: '$CI_MERGE_REQUEST_TITLE =~ /WIP:/'
          when: never
        - if: '$CI_PIPELINE_TRIGGERED =~ "true"'
          when: always
        - when: always

问题是当我尝试使用以下 curl 请求触发它时,它告诉我管道已被工作流规则过滤掉,我无法弄清楚出了什么问题。

这是我尝试使用的 curl 请求:

curl --verbose -X POST -F token=$TRIGGER_TOKEN -F ref=BRANCH_NAME https://gitlab_url/api/v4/projects/357/trigger/pipeline"

【问题讨论】:

    标签: yaml gitlab-ci gitlab-api


    【解决方案1】:

    问题似乎在于 Gitlab 如何评估规则。引用自https://docs.gitlab.com/ee/ci/jobs/job_control.html#specify-when-jobs-run-with-rules
    规则会按顺序进行评估,直到第一次匹配。找到匹配项后,该作业要么被包含在管道中,要么被排除在管道之外,具体取决于配置

    例如,在您的情况下,评估的第一条规则是

    - if: '$CI_MERGE_REQUEST_IID == null'
      when: never
    

    如果合并请求 iid 为 null,gitlab 不会评估其他规则。 并停止执行

    如果规则不匹配,那么它将按照相同的原则依次评估下一个规则

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      • 2020-04-29
      • 1970-01-01
      • 2020-06-15
      • 2021-09-21
      • 2021-05-27
      • 2020-09-20
      相关资源
      最近更新 更多