在使用 .gitlab-ci.yml 完成与开发分支的合并后,我想运行特定脚本将标签移动到主分支。
目标是在合并完成后运行作业,我找不到合适的方法来做到这一点。我尝试使用“合并结果管道”,但我不知道限制它仅在合并完成后运行。
这可以通过每当提交默认分支时触发来实现,这是我的偏好:
job-x:
...
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
添加以确保它仅在合并时发生:
job-x:
...
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PIPELINE_SOURCE == 'merge_request_event'
下面我粘贴了对我有用的代码。
move_tags:
stage: move_tags
allow_failure: true
timeout: 24h
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: never
- if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "main"'
when: manual
如果
when: manual
不存在,接受的答案将在提交时运行管道以避免这种情况,您可以使用 Gitlab ci 预定义变量 $CI_MERGE_REQUEST_APPROVED 这将在合并后返回 true,并可从 gitlab v14.1 获得。
如果要在主分支创建合并请求时运行管道,可以将 $CI_MERGE_REQUEST_TARGET_BRANCH_NAME 与 $CI_MERGE_REQUEST_APPROVED 一起使用。
您可以在您的工作中添加这样的规则。
rules:
- if: $CI_MERGE_REQUEST_APPROVED && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"