我能够使用Rest API调用来触发Azure DevOps版本。但是,当我尝试通过添加计划来执行此操作时,它不起作用。我使用的代码如下:
$PATtoken= 'PAT'
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PATtoken)"))
$header=@{authorization= "Basic $token" }
$defurl = "https://vsrm.dev.azure.com/Orgnization/Project/_apis/release/definitions/13?api-version=5.1"
$definition = Invoke-RestMethod -Uri $defurl -Method Get -Headers $header
$triggers = '
[{
"schedule": {
"timeZoneId": "India Standard Time",
"startHours": 20,
"startMinutes": 40,
"daysToRelease": 31
}
}]'
$definition | Add-Member -NotePropertyName "triggers" -NotePropertyValue (Convertfrom-Json $triggers) -Force
$json = @($definition) | ConvertTo-Json -Depth 99
$updatedef = Invoke-RestMethod -Uri $defurl -Method Put -Body $json -ContentType "application/json" -Headers $header
Write-Host ($updatedef.triggers | ConvertTo-Json -Depth 99)
但是不幸的是,调度或触发没有发生。
答案 0 :(得分:2)
您可以通过以下方式做到这一点:
...
$definition = Invoke-RestMethod -Uri $defurl -Method Get -Headers $header
$hash = @(
@{ triggerType="schedule";
schedule = @{"daysToRelease"="31";"timeZoneId"="India Standard Time";"startHours"="20";"startMinutes"="40"}
}
)
$definition.triggers = $hash
$json = $definition | ConvertTo-Json -Depth 99
Invoke-RestMethod -Uri $defurl -Method Put -Body $json -ContnetType application/json -Headers $header
答案 1 :(得分:1)
您不应将时间表添加到triggers
中以配置发布管道时间表的执行。
您可以将Postman用作测试。参见下面的图片:
即使我已经在请求正文中配置了计划脚本,响应正文在trigger
中仍然没有内容。
要设置计划,您需要将上述计划脚本应用于schedules
,该脚本嵌套在environment
下。另外,您可以使用Fiddler捕获记录,以通过在 UI 中配置计划版本来确认。