Gitlab CI 通过 API 使用工作流规则触发管道
Gitlab CI Trigger pipeline by API with workflow rules
我的主要管道中有以下工作流程规则:
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"
问题似乎与 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将不会评估其他规则。
并停止执行
如果规则不匹配,那么它将按照相同的原则依次评估下一条规则
我的主要管道中有以下工作流程规则:
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"
问题似乎与 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将不会评估其他规则。 并停止执行
如果规则不匹配,那么它将按照相同的原则依次评估下一条规则