答案 0 :(得分:3)
使用powershell调用api不需要那么复杂。我们具有内置功能可以满足您的要求。由于发布管道包含一个或多个阶段,因此重新部署发布管道可以视为重新运行阶段。
因此,首先打开发布管道定义。然后导航到该阶段的部署后条件 =>启用自动重新部署触发器 =>选择事件和操作< / strong>:
查看实际执行结果:
这是Azure Devops的优势,因此您不必担心在Prod部署过程中是否出了什么问题,因为该工具将自动通过其自身自动撤消上一次成功的部署。
已更新:
$connectionToken="{PAT}"
$url="https://vsrm.dev.azure.com/{org}/{project}/_apis/release/releases?api-version=6.0"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$Body=@"
{
"definitionId": {specific release definition id},
"description": "Creating release from powershell",
"artifacts": [
{
"alias": "{artifact name}",
"instanceReference": {
"id": "{buildid}",
"name": null
}
}
],
"isDraft": false,
"reason": "none",
"manualEnvironments": null
}
"@
Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -Body $Body -ContentType application/json
答案 1 :(得分:1)
没有简单的方法可以实现此目的,您需要使用REST API。
GET https://vsrm.dev.azure.com/{{organization}}/{{project}}/_apis/release/deployments?definitionId=7&api-version=6.1-preview.2
您需要在powershell中解析响应以获取您的发行版ID和其他详细信息。
POST https://vsrm.dev.azure.com/fabrikam/MyFirstProject/_apis/release/releases?api-version=6.0
这是一个示例身体
{
"definitionId": 1,
"description": "Creating Sample release",
"artifacts": [
{
"alias": "Fabrikam.CI",
"instanceReference": {
"id": "2",
"name": null
}
}
],
"isDraft": false,
"reason": "none",
"manualEnvironments": null
}
您将在第一个端点的响应中找到工件的详细信息。
这是一个示例,您可以如何从任务中调用REST API
$uri = "https://dev.azure.com/thecodemanual/DevOps Manual/_apis/build/builds/$(Build.BuildId)/timeline?api-version=5.1"
Write-Host $uri
# Invoke the REST call
$build = Invoke-RestMethod -Uri $uri -Method Get -Headers @{Authorization = "Bearer $(System.AccessToken)"} -ContentType "application/json"
$taskResult = $build.records | Where-Object {$_.name -eq "ConditionalStep" } | Select-Object result
Write-Host $taskResult.result