我的主管道中有以下工作流规则:
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将不会评估其他规则。并停止执行
如果规则不匹配,那么它将按照相同的原则依次评估下一个规则