Gitlab CI,合并请求目标分支

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

在我的管道中,我希望仅当合并请求目标分支是某个分支时才运行作业,例如release/1.0.0-rc或release/1.5.0-rc等。

这是我的工作:

build-composer:
  stage: build-app
  image:
    name: $PHP_IMAGE
    entrypoint: [""]
  script:
    - composer install
  artifacts:
    paths:
      - vendor/
    expire_in: 1h
  rules:
    - if: '$CI_COMMIT_BRANCH == "dev" && $CI_COMMIT_TAG == null'
      when: always
    - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == "dev" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^release\/.*$/ && $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_STATE == "merged"'
      when: always
    - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature\/.*$/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "dev" && $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_STATE == "merged"'
      when: always

尝试将来自 feature/* 分支的请求合并到 dev 成功触发管道在合并后运行。但是,从 dev 分支合并到release/1.0.0-rc 时,不会触发任何管道。

我也尝试过将

=~ /^release\/.*$/
更改为
== "release/**"
,但没有成功。

gitlab gitlab-ci cicd
1个回答
0
投票

这是因为执行

merge
事件不会触发 MR 管道,正如 docs 所解释的那样:

这种类型的管道称为合并请求管道,在以下情况下运行:

  • 从具有一次或多次提交的源分支创建新的合并请求。
  • 将新提交推送到源分支以进行合并请求。
  • 转到合并请求中的“管道”选项卡,然后选择“运行管道”。

合并时,触发的事件是

commit
target branch
。在第一个场景中,由于规则
dev
,它与 
if: '$CI_COMMIT_BRANCH == "dev" && $CI_COMMIT_TAG == null'

分支一起工作

您正在寻找的是

merged results pipelines
,请查看 docs 了解如何设置这些内容。

© www.soinside.com 2019 - 2024. All rights reserved.