Gitlab-ci: 如果 MR 存在就触发 merge_request 分离管道,如果不存在则触发源分支管道。这 2 个管道不应该同时 运行
Gitlab-ci: if MR exist just trigger merge_request detach pipeline, if not trigger source branch pipeline. Those 2 pipelines shouldn't run in same time
我想在创建 MR 时在 MR(合并请求)命令部分看到声纳结果。
我的主要期望:
- 如果源分支存在 MR,则触发分离管道(不触发特征管道。我只需要那个用于在 MR 命令中查看声纳结果)
- 如果源分支没有现成的 MR,则触发正常的特征(源)分支流水线
我尝试在下面的示例阶段做到这一点。但是当我将提交推送到源管道时,源分支存在 MR。我仍然得到双管道。分离和源管道是 运行ning,我不想同时看到这两个管道,除了不使用规则配置。如何将除外部分与规则部分集成。
这是我的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
templates, In this case, you can use the CI_OPEN_MERGE_REQUESTS
variable 中介绍了确定 运行 合并请求的管道还是仅功能分支。
If you use both [pipelines for merge requests and branch pipelines], duplicate pipelines might run at the same time. To prevent duplicate pipelines, use the CI_OPEN_MERGE_REQUESTS variable.
使用 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'
这意味着您的管道将 运行:
- 合并请求
- 对于分支管道,除非有开放的合并请求
我想在创建 MR 时在 MR(合并请求)命令部分看到声纳结果。
我的主要期望:
- 如果源分支存在 MR,则触发分离管道(不触发特征管道。我只需要那个用于在 MR 命令中查看声纳结果)
- 如果源分支没有现成的 MR,则触发正常的特征(源)分支流水线
我尝试在下面的示例阶段做到这一点。但是当我将提交推送到源管道时,源分支存在 MR。我仍然得到双管道。分离和源管道是 运行ning,我不想同时看到这两个管道,除了不使用规则配置。如何将除外部分与规则部分集成。
这是我的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
templates, In this case, you can use the CI_OPEN_MERGE_REQUESTS
variable 中介绍了确定 运行 合并请求的管道还是仅功能分支。
If you use both [pipelines for merge requests and branch pipelines], duplicate pipelines might run at the same time. To prevent duplicate pipelines, use the CI_OPEN_MERGE_REQUESTS variable.
使用 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'
这意味着您的管道将 运行:
- 合并请求
- 对于分支管道,除非有开放的合并请求