【问题标题】:How to run pipeline after merge request approved in Gitlab CI?在 Gitlab CI 中批准合并请求后如何运行管道?
【发布时间】:2022-11-04 13:18:57
【问题描述】:

我希望 GitLab CI 在合并请求合并后运行作业。我不希望它在创建新的合并请求时运行,也不希望它在目标分支更新时运行。 (因为可以直接提交到目标分支,并且在这种情况下不应该运行作业。)

那可能吗?

如果是,我还想知道有关触发作业的合并请求的信息。

(实际上我想在合并请求时更新我的​​项目管理系统。因此我需要知道哪个合并请求被合并(或批准)。)

提前致谢。

【问题讨论】:

标签: gitlab-ci


【解决方案1】:

我希望 GitLab CI 在合并请求合并后运行作业。

不幸的是,GitLab 不提供“合并请求合并”触发器。

您可以做的是让管道为某个分支中的任何推送运行,并使用分支保护来确保推送只能来自合并请求。要做到这一点:

  1. 将您的管道设置为仅运行,例如对于分支主要:
    # if you want to use "only":
    my_job: 
      only:
        - main
    
    # or alternatively if you want to use rules you can do the same with: 
    my_job:
      rules:
        - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_REF_NAME == "master"'
    
    1. 启用 Branch protection 以禁用直接推送到 main 并且只允许 MR:

【讨论】:

  • 您能否在此处添加更多详细信息...
  • 我添加了更多细节。希望能帮助到你。
  • if: '$CI_PIPELINE_SOURCE == "push" && $CI_BUILD_REF_NAME == "master"' 不起作用。对我来说什么都没有触发。我错过了什么?
  • @LucasWillems 以下应该有效。它至少在 GitLab 15.1 上对我有用。 if: $CI_COMMIT_BRANCH == "main"
【解决方案2】:

您可以在合并后使用 Gitlab ci 预定义变量 $CI_MERGE_REQUEST_APPROVED 运行管道,这将在合并后返回 true,并且在 gitlab v14.1 之后可用,但在使用此预定义变量之前,您必须启用 merged results pipeline

rules:
  - if: $CI_MERGE_REQUEST_APPROVED

【讨论】:

    猜你喜欢
    • 2019-03-13
    • 2022-01-07
    • 2021-11-28
    • 2022-11-07
    • 2016-12-22
    • 2020-05-05
    • 2021-01-23
    • 1970-01-01
    • 2018-01-07
    相关资源
    最近更新 更多