如何在Azure DevOps中按分支生成递增构建编号以命名SNAPSHOTS工件?
在Azure DevOps中实现分支专属递增构建编号的工件命名方案
一、利用内置变量+构建编号规则实现
Azure DevOps可以通过自定义构建编号格式配合分支变量,直接实现分支内递增的编号逻辑:
配置分支专属的构建编号
- 进入流水线编辑页面,点击右上角「省略号」→「流水线设置」
- 在「常规」标签的「构建编号格式」中输入:
其中$(Build.SourceBranchName)_$(rev:r)$(Build.SourceBranchName)会自动获取当前分支名称,$(rev:r)是分支专属的递增计数器——同一分支每次构建时数字自动加1,不同分支的计数相互独立。比如分支MyGreatFeature第四次构建时,构建编号就是MyGreatFeature_4。
引用构建编号命名工件
在流水线的「发布工件」步骤中,将工件名称设置为$(Build.BuildNumber),即可自动生成符合要求的工件名。
二、通过REST API自定义查询分支构建次数(备用方案)
如果需要更灵活的计数规则(比如排除失败构建),可以用Azure DevOps REST API查询指定分支的历史构建次数,再传入流水线作为变量:
添加脚本步骤查询构建次数
在流水线中加入「PowerShell」步骤,开启「允许脚本访问OAuth令牌」权限,然后执行以下代码:$orgUrl = "$(System.TeamFoundationCollectionUri)" $projectName = "$(System.TeamProject)" $definitionId = "$(System.DefinitionId)" $branchName = "$(Build.SourceBranchName)" $pat = "$(System.AccessToken)" $headers = @{ Authorization = "Bearer $pat" } # 查询当前分支下已完成的构建记录 $url = "$orgUrl/$projectName/_apis/build/builds?definitions=$definitionId&sourceBranch=refs/heads/$branchName&statusFilter=completed&api-version=7.1-preview.7" $response = Invoke-RestMethod -Uri $url -Headers $headers -Method Get # 计算当前构建的序号(历史完成次数+1) $branchBuildCount = $response.count + 1 # 设置为流水线全局变量 Write-Host "##vso[task.setvariable variable=BranchBuildCount;]$branchBuildCount"使用自定义变量命名工件
在发布工件步骤中,将工件名称设置为$(Build.SourceBranchName)_$(BranchBuildCount)即可。
内容的提问来源于stack exchange,提问作者opticyclic
相关产品推荐
相关产品推荐

