如何在 ADO 发布标题中包含源分支名称或拉取请求 ID?

How to include Source Branch name or pull request ID in ADO release title?

我有一个 CD 发布管道,每当新的合并请求 (PR) 构建成功时就会部署该管道。我想在我的发布标题中包含该 PR 的源分支名称和 PR id。

我在标题中尝试了以下变量,但它们没有用:

$(system.pullRequest.sourceBranch)

$(BUILD.PullRequest.SourceBranch)

$(BUILD.PullRequest.ID)

我只是不想使用 $(Build.SourceBranch) 或 $(Build.SourceBranchName) 因为它没有给我预期的价值。

我的预期发布标题: “PR 运行- personal/ak/randombuild,PRID 1234 - 01”

PR 变量在发布范围内不可用:How do I manage the names for new releases?

但是,。您可以使用 BuildId 通过 Rest API 获取详细的构建信息并更新您的版本名称。

PowerShell 示例:

$user = ""
$token = $env:SYSTEM_ACCESSTOKEN

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
$orgUrl = "$env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"
$teamProject = "$env:SYSTEM_TEAMPROJECT"
$currentBuildId = "$env:BUILD_BUILDID"

$restApiGetBuild = "$orgUrl/$teamProject/_apis/build/builds/$currentBuildId`?api-version=6.0"

function InvokeGetRequest ($GetUrl)
{   
    return Invoke-RestMethod -Uri $GetUrl -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
}

$resBuild = InvokeGetRequest $restApiGetBuild

if (-not [string]::IsNullOrEmpty($resBuild.triggerInfo.'pr.number'))
{
    Write-Host "##vso[release.updatereleasename]PR Run - PR ID" $resBuild.triggerInfo.'pr.number'
}

将其添加为发布中的一个步骤。结果:

不要忘记为您的发布管道提供对令牌的访问权限:

你快到了。 您需要的变量是 $(Build.PullRequest.SourceBranch) 由于您的发布管道是由拉取请求触发的,因此它将可用。

但我必须警告您,Microsoft 并未记录此变量。

看看这张图片 Variable available at the release pipeline