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 后:
- 打开合并请求中的管道选项卡
- 单击“运行 管道”按钮
我正在尝试一些与规则相关的更改但没有成功 要求: 当 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 后:
- 打开合并请求中的管道选项卡
- 单击“运行 管道”按钮