是否可以触发PowerShell的发布(构建管道中的PowerShell任务)并传递过程变量(可以在发布时设置)?
目标:
我们拥有使用多个分支的构建管道。我想基于分支名称从版本中触发一个发布(在发布时可以设置变量)。
在发布时使用变量的原因是,他的变量用于针对天蓝色的特定资源。
答案 0 :(得分:1)
我们可以通过调用REST API(Releases - Create)触发从Powershell释放,但不能传递过程变量(在释放时可设置)。
因为我们必须在请求正文中提供特定的artifact version ID
(哪个工件可用来触发释放)。提供artifact version ID
后,该变量将不再有用。
您可以参考下面的PowerShell脚本来触发发布:
Param(
[string]$collectionurl = "https://{account}.vsrm.visualstudio.com",
[string]$projectName = "GIT",
[string]$user = "username",
[string]$token = "password",
[string]$releasedDefinitionId = "3"
)
# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
function CreateJsonBody
{
$value = @"
{
"definitionId":$releasedDefinitionId,
"artifacts":[{"alias":"_BitBucketDev",
"instanceReference":{"id":"454",
"name":"454",
"definitionId":"58",
"sourceBranch":"master",
}
}
],
"isDraft":false,
"manualEnvironments":[]
"@
return $value
}
$json = CreateJsonBody
$uri = "$($collectionurl)/$($projectName)/_apis/Release/releases?api-version=4.1-preview.6"
$result = Invoke-RestMethod -Uri $uri -Method Post -Body $json -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
$ReleaseID = $result.id
Write-Host "ReleaseID:" $ReleaseID