合并完成后运行的 Gitlab CI 管道

问题描述 投票:0回答:3

在使用 .gitlab-ci.yml 完成与开发分支的合并后,我想运行特定脚本将标签移动到主分支。

目标是在合并完成后运行作业,我找不到合适的方法来做到这一点。我尝试使用“合并结果管道”,但我不知道限制它仅在合并完成后运行。

merge gitlab continuous-integration
3个回答
0
投票

这可以通过每当提交默认分支时触发来实现,这是我的偏好:

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'

-2
投票

下面我粘贴了对我有用的代码。

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

-2
投票

如果

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"
© www.soinside.com 2019 - 2024. All rights reserved.