GitLab CI流水线如何实现提交信息含--deploy的反向正则匹配
GitLab CI 配置修改方案
先明确两个基础规则,避免逻辑写反:
except块下variables列表中的表达式返回true时,当前作业会被跳过,不执行- 正则匹配操作符
!~表示「字符串不匹配正则时返回真」,=~表示「字符串匹配正则时返回真」 - GitLab CI的正则默认支持子串匹配,原正则里的
^.*是冗余写法,直接写/--deploy/即可匹配任意位置携带该字符串的提交信息
目标效果:仅提交信息携带--deploy时触发部署
如果不需要保留原配置中review分支的特殊豁免,要求所有非tags、非master分支的提交,只有带--deploy标识才运行部署作业,使用以下配置:
deploy_review: <<: *deploy_review_base except: refs: - tags - master variables: - $CI_COMMIT_MESSAGE !~ /--deploy/
逻辑说明:提交信息不含--deploy时表达式返回真,作业被跳过;只有携带--deploy的提交不会命中跳过规则,正常执行。
目标效果:保留review分支豁免,其他分支带--deploy才部署
如果需要保留原有逻辑中review分支无需携带--deploy即可部署的规则,仅优化正则写法即可,配置如下:
deploy_review: <<: *deploy_review_base except: refs: - tags - master variables: - $CI_COMMIT_BRANCH != "review" && $CI_COMMIT_MESSAGE !~ /--deploy/
逻辑说明:当分支不是review且提交信息不带--deploy时跳过作业,即review分支全量放行,其他分支必须带--deploy才部署。
目标效果:提交信息带--deploy时跳过部署
如果反向校验的需求是识别到--deploy就拦截部署、不执行作业,同时保留原review分支豁免逻辑,把否定匹配操作符替换为肯定匹配即可,配置如下:
deploy_review: <<: *deploy_review_base except: refs: - tags - master variables: - $CI_COMMIT_BRANCH != "review" && $CI_COMMIT_MESSAGE =~ /--deploy/
逻辑说明:非review分支下,只要提交信息携带--deploy,表达式就返回真,作业被跳过。
内容的提问来源于stack exchange,提问作者Mahela Wickramasekara
相关产品推荐
相关产品推荐

