gitlab 仅在从功能合并和合并请求批准时的条件

gitlab only condition when merge from feature and merge request approved

我正在尝试一些与规则相关的更改但没有成功 要求: 当 feature-A 或 feature-B 合并到 develop 时,当合并请求被批准时,构建阶段应该 运行。 谢谢!

    build_development:
    stage: build
    # when: manual
    script:
    - | 
       echo "Intiating application docker build and push to ECR.."
  tags: 
    - docker
  # only:
  #   - merge_requests
  #   - develop
  # except:
  #   - prod
  # rules:
  #   - if: '$CI_MERGE_REQUEST_APPROVED == "true" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == /^feature-.*$/' 
  #     when: always
  rules:
    - if: '$CI_MERGE_REQUEST_APPROVED == "true" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^develop$/'
      when: always

这里有两个关键要素需要理解:

  • rules:(以及 only:/except:)在管道创建时被评估
  • 合并请求批准不会触发管道事件

因此,如果您的合并请求在创建管道时未获批准,则任何需要 CI_MERGE_REQUEST_APPROVED 的作业都不会 true包含在管道中,即使之后批准了合并请求。批准 MR 不会更改现有管道,也不会触发新管道。

为了获得您想要的效果,您将不得不从 MR 手动触发一个新的管道。为此,在批准 MR 后:

  1. 打开合并请求中的管道选项卡
  2. 单击“运行 管道”按钮