Azure DevOps Release Pipeline 如何避免特定标签部署到测试服务器
解决方案
你可以通过以下两种主流方案实现需求,可根据你使用的CI/CD平台的支持能力选择:
方案1:直接调整持续部署触发器的标签匹配规则
绝大多数CI/CD平台的标签触发器都支持通配符或正则匹配,你可以把原有refs/tags/*的规则替换为只匹配末尾版本号为0的标签即可:
- 若平台支持简单通配符匹配:直接配置为
refs/tags/*.*.0,即可匹配所有末尾段为0的版本标签 - 若平台支持正则匹配:可以用严格正则
^refs/tags/\d+\.\d+\.0$,仅匹配符合x.xx.0格式的标签,避免不符合版本规则的标签误触发
提示:部分平台的正则匹配需要手动开启正则匹配模式,配置完成后可以先用测试标签验证匹配逻辑是否符合预期
方案2:在流水线首步添加标签校验逻辑
如果你的平台不支持复杂的标签匹配规则,可以在部署流程的最开头加一步校验逻辑,不符合要求的版本直接终止部署:
- 先获取当前触发流水线的标签名存入变量
TAG_NAME - 提取标签的最后一段版本号做判断,只有等于0时才继续执行后续部署步骤,否则直接正常终止流水线
Bash环境示例代码
TAG_NAME=$(git describe --tags --abbrev=0) TAG_SUFFIX=$(echo $TAG_NAME | awk -F '.' '{print $NF}') if [ "$TAG_SUFFIX" -ne 0 ]; then echo "当前为bug修复版本,跳过测试环境部署" exit 0 # 正常退出不会标记流水线失败 fi
PowerShell环境示例代码
$TAG_NAME = git describe --tags --abbrev=0 $TAG_SUFFIX = $TAG_NAME.Split('.')[-1] if ($TAG_SUFFIX -ne 0) { Write-Host "当前为bug修复版本,跳过测试环境部署" exit 0 }
补充建议
两种方案可以搭配使用:先用触发器规则过滤绝大多数不符合要求的标签,再用流水线内的校验做二次保障,避免规则匹配疏漏导致的误部署。
内容的提问来源于stack exchange,提问作者user2839740
相关产品推荐
相关产品推荐

