在我的Azure生成管道(经典的,不是YAML)中,我将内部版本号设置为分支名称,然后是版本号变量。这是我的过程: 管道->管道-> {我的管道}->编辑->选项->内部版本号格式
$(SourceBranchName)$(Rev:.r)
在我的测试中,效果很好。
现在,在我的发布管道中,我运行的第一个脚本是一个PowerShell脚本,该脚本采用内部版本号,并将其应用于我创建的本地变量(MyBuild)。脚本如下:
Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 100)"
$buildNumber = $Env:BUILD_BUILDNUMBER
$pipeline.variables.MyBuild.value = $buildNumber
此变量稍后在管道中使用,以创建一个存放我的发行文件的文件夹。
$(BuildDirectory)/$(MyBuild)/Debug
由于某种原因,我的变量总是落后一个。例如,如果我的内部版本号是master.5,则我的发布管道创建的文件夹是master.4。我试图更改脚本在管道中的顺序,但这并不能解决任何问题。这很奇怪,因为我的构建管道是正确的(总是正确命名,例如master.1,master.2,master.3等),但是我的Release Pipeline变量总是落后一个修订版。
答案 0 :(得分:1)
用于更新自定义内部版本号的Powershell脚本
- powershell: |
[string]$version="$(Build.Repository.Name)_SomeCustomData_$(Build.BuildId)"
Write-Output "##vso[build.updatebuildnumber]$(Version)"
displayName: Set Build Number
答案 1 :(得分:0)
我测试了它,并且效果很好。以下是我的复制品,您可以参考:
在发布管道中:
Write-Host '##vso[task.setvariable variable=MyBuild]$(Build.BuildNumber)'
md $(Agent.ReleaseDirectory)/$env:MyBuild/Debug
选择构建源作为发布工件,默认版本选择最新,启用Continuous deployment trigger
。每当有新版本可用时,都会创建一个发行版。
测试重用:
此外,我感到困惑的是您如何在发布管道中使用$(BuildDirectory)
? Agent.BuildDirectory
:
代理上的本地路径,将为给定的构建管道创建所有文件夹。此预定义变量在发布管道中不可用,我们应该使用Agent.ReleaseDirectory
。您可以参考predefined variable。