我希望 gitlab-ci 忽略来自特定分支的合并。
例如:我有 3 个分支。 掌握、开发和测试。
如果我直接推送代码或将代码从任何分支合并到 master/development,管道就会执行。
现在,当我专门从 test 分支合并时,我不希望管道运行。
我想排除从 test 分支到 development 或 master 的合并。
答案 0 :(得分:1)
这可以通过为要排除的作业指定 if-rule 来完成。 例如:
docker build:
script: docker build -t my-image:$CI_COMMIT_REF_SLUG .
rules:
- if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != "test" || ($CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == "test" and ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME != "master" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != "development"))'
2 个变量 CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
和 CI_MERGE_REQUEST_TARGET_BRANCH_NAME
仅在合并请求的情况下为 automatically defined。
答案 1 :(得分:0)
Gitlab CI 不必验证合并的是“什么”,只需验证合并的是“在哪里”。
您可以使用使用 git
命令的脚本来完成(它允许检查两个父项的合并提交)。但是,我建议您不要这样做。原因是您可能会错过从非“测试”分支合并的更改的构建。
例如
此时,从 p2 开始的构建被 Gitlab 取消,从 p2 开始的构建被您的脚本取消。因此,缺少所需的构建。