我将用一个场景来解释我的问题,以使其更清楚。
我有:
main
分支(默认,受保护):有.gitignore +锁定的cicd.yml
文件feature
分支:从主分支复制,然后添加所需功能.gitlab-ci.yml
文件包含项目的构建和部署作业 (需要合并请求预定义变量 - 标题 + 描述)
想要的场景:
feature
分支的更改并请求合并到 main
需要批准 -> .gitlab-ci.yml
不运行.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
是图像标签)
如果我理解正确的话,你只需要在将东西合并到主分支时才需要运行管道?如果是这样,则有一个作业规则,该规则将在主分支中运行:
`
if: '($CI_COMMIT_BRANCH =~ /^main\/*/) && ($CI_PIPELINE_SOURCE == "push")'
when: on_success
`
请注意,合并时的实际操作是“推送”。因此,您需要确保您的主分支受到强制推送的保护。