Azure开发运营|触发从Powershell释放并传递过程变量(可在释放时设置)

时间:2018-10-18 14:12:48

标签: azure-devops

是否可以触发PowerShell的发布(构建管道中的PowerShell任务)并传递过程变量(可以在发布时设置)?

目标:

我们拥有使用多个分支的构建管道。我想基于分支名称从版本中触发一个发布(在发布时可以设置变量)。

在发布时使用变量的原因是,他的变量用于针对天蓝色的特定资源。

1 个答案:

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