API使用工作流规则触发Gitlab CI管道



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

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 --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-作业使用规则运行时
规则按顺序评估,直到第一次匹配。当找到匹配项时,根据配置,作业会被包括在管道中或从管道中排除

例如,在您的案例中,评估的第一条规则是

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

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

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

最新更新