Azure管道-将自定义变量设置为内部版本号

时间:2020-04-22 19:38:32

标签: azure powershell azure-devops azure-pipelines-release-pipeline

在我的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变量总是落后一个修订版。

2 个答案:

答案 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)'

enter image description here

md $(Agent.ReleaseDirectory)/$env:MyBuild/Debug

enter image description here

选择构建源作为发布工件,默认版本选择最新,启用Continuous deployment trigger。每当有新版本可用时,都会创建一个发行版。

测试重用:

enter image description here

enter image description here

enter image description here

此外,我感到困惑的是您如何在发布管道中使用$(BuildDirectory)Agent.BuildDirectory
代理上的本地路径,将为给定的构建管道创建所有文件夹。此预定义变量在发布管道中不可用,我们应该使用Agent.ReleaseDirectory。您可以参考predefined variable