Azure Pipelines:仅在release分支显示prod阶段的配置问题
问题解决方法
你的问题出在分支变量的选择和匹配逻辑上,具体原因和修正方案如下:
核心问题
你混淆了Azure DevOps里两个分支相关变量的内容:
Build.SourceBranch:存储完整的分支引用路径,格式是refs/heads/分支名,比如refs/heads/release/v1.0Build.SourceBranchName:只存储分支的名称部分,比如release/v1.0
你当前的判断条件是检查Build.SourceBranchName是否以refs/heads/release开头,但这个变量本身就没有refs/heads/前缀,所以条件永远不成立,导致prod阶段不会显示。
修正方案
可以任选以下两种方式之一修改:
方案1:使用完整分支路径变量Build.SourceBranch
trigger: - main pr: - main stages: - template: templates/infra-terraform-deploy.yml@templates parameters: # parameters - template: templates/infra-terraform-deploy.yml@templates parameters: # parameters - ${{ if startsWith( variables['Build.SourceBranch'], 'refs/heads/release/' ) }}: - template: templates/infra-terraform-deploy.yml@templates parameters: # parameters
方案2:使用分支名称变量Build.SourceBranchName
trigger: - main pr: - main stages: - template: templates/infra-terraform-deploy.yml@templates parameters: # parameters - template: templates/infra-terraform-deploy.yml@templates parameters: # parameters - ${{ if startsWith( variables['Build.SourceBranchName'], 'release/' ) }}: - template: templates/infra-terraform-deploy.yml@templates parameters: # parameters
额外提示
如果你的release分支是直接以release开头(比如release而非release/xxx),可以把判断条件里的末尾斜杠去掉,改成startsWith(..., 'release')或者startsWith(..., 'refs/heads/release')。
内容的提问来源于stack exchange,提问作者michasaucer
相关产品推荐
相关产品推荐

