我想在创建 MR 时在 MR(合并请求)命令部分查看声纳结果。
我的主要期望:
我尝试用下面的示例阶段来做到这一点。但是当我将提交推送到源管道时,而源分支存在 MR。我仍然得到双管道。分离管道和源管道正在运行,我不想同时看到两者,而且除了不使用规则配置之外。如何将 except 部分与规则部分集成。
这是我的gitlab-ci阶段:
deploy:
stage: deployment
when: manual
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CUSTOM_VARIABLE == "true" || $CUSTOM_VARIABLE == "true"'
script:
- ....
- ....
except:
- tags
- main
我还尝试了以下规则,如果其中一项符合我的条件,则不要运行另一项。但它仍然触发两条管道。
deploy:
stage: deployment
when: manual
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CUSTOM_VARIABLE == "true"'
when: on_success
- if: '$CI_PIPELINE_SOURCE == "push" && $CUSTOM_VARIABLE == "true"'
when: on_success
script:
- ....
- ....
except:
- tags
- main
workflow:rules
模板中,在这种情况下,您可以使用CI_OPEN_MERGE_REQUESTS
变量来确定是运行合并请求的管道还是仅运行功能分支。
如果您同时使用[合并请求管道和分支管道],则可能会同时运行重复的管道。为了防止重复管道,请使用 CI_OPEN_MERGE_REQUESTS 变量。
使用
workflow:rules
,您可以对整个管道执行此操作,但相同的原则也可以应用于单个作业。
workflow:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS'
when: never
- if: '$CI_COMMIT_BRANCH'
这意味着您的管道将运行:
您可以使用:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS == 'false'
这意味着您的管道将运行: