使用合并请求预定义变量时,是否可以在从批准的合并请求合并后运行项目的 ci/cd 管道

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

我将用一个场景来解释我的问题,以使其更清楚。
我有:

  • main
    分支(默认,受保护):有.gitignore +锁定的cicd.yml 文件
  • feature
    分支:从主分支复制,然后添加所需功能
  • .gitlab-ci.yml
    文件包含项目的构建和部署作业 (需要合并请求预定义变量 - 标题 + 描述)


想要的场景:

  1. dev 提交对
    feature
    分支的更改并请求合并到
    main
    需要批准 ->
    .gitlab-ci.yml
    不运行
  2. 请求获得批准后合并 -> 使用
    .gitlab-ci.yml
    预定义变量(标题和描述)在
    main
    而非
    feature
    中运行
    $CI_MERGE_REQUEST_*
    (标题和描述)


我已经尝试过以下工作流程规则

rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_APPROVED && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_MERGE_REQUEST_TITLE =~ /^v\d+(\.\d+){2}$/ && $CI_MERGE_REQUEST_DESCRIPTION != "" && $CI_MERGE_REQUEST_DESCRIPTION =~ $MERGE_REQUEST_DESC_PATTERN && $CI_MERGE_REQUEST_EVENT_TYPE == "merged_result"

我需要检查

$CI_MERGE_REQUEST_TITLE
$CI_MERGE_REQUEST_DESCRIPTION
,这样它们就不能被删除(它们也用于构建图像
$CI_MERGE_REQUEST_TITLE
是图像标签)

这个场景有可能实现吗?如果没有,你能建议一个解决方法吗
提前谢谢你

gitlab-ci pipeline
1个回答
0
投票

如果我理解正确的话,你只需要在将东西合并到主分支时才需要运行管道?如果是这样,则有一个作业规则,该规则将在主分支中运行:

   `  
    if: '($CI_COMMIT_BRANCH =~ /^main\/*/) && ($CI_PIPELINE_SOURCE == "push")'
    when: on_success
   `

请注意,合并时的实际操作是“推送”。因此,您需要确保您的主分支受到强制推送的保护。

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