GitLab CI配置beta分支提交信息不匹配正则时运行job不生效怎么办
问题根因
你的配置失效的核心原因是正则表达式元字符未转义:GitLab CI 的 rules:if 条件使用 POSIX 扩展正则表达式(ERE),() 是正则语法中的分组元字符,你要匹配字面量的 chore(release) 字符串,必须对括号做转义处理。
同时推荐使用 CI_COMMIT_TITLE 变量替代 CI_COMMIT_MESSAGE:前者对应提交信息的第一行(提交标题),和 semantic-release 生成的发布提交格式完全匹配,避免提交描述内容干扰匹配结果。
修复后配置
# --snip-- release_beta: stage: 📦 release image: name: <private_image> entrypoint: - '/usr/bin/env' - 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' before_script: - cp $SR_CONFIG_PATH/.releaserc.json . script: - npx semantic-release rules: # 避免semantic-release推送的发布提交再次触发发布任务 - if: '$CI_COMMIT_BRANCH == "beta" && $CI_COMMIT_TITLE !~ /^chore\(release\)/'
验证与排查建议
如果修改后仍然不符合预期,可以添加临时调试任务确认变量内容:
debug_commit_info: stage: .pre script: - echo "提交标题:$CI_COMMIT_TITLE" - echo "完整提交信息:$CI_COMMIT_MESSAGE" rules: - if: '$CI_COMMIT_BRANCH == "beta"'
这个任务会在流水线最前执行,输出的内容可以帮你确认提交信息是否符合匹配规则。
内容的提问来源于stack exchange,提问作者Jonas Pauthier
相关产品推荐
相关产品推荐

