通过UI触发Azure管道问题

时间:2020-11-06 07:04:35

标签: azure-devops

我们有一个YML Azure发布管道,在构建管道完成后,我们试图在其下触发该管道。

我们注意到当构建管道部分成功时,不会触发版本YML。尽管当我们在下面的代码片段中使用释放管道中的触发器部分时,即使构建部分成功,它也会被触发,但是当我们通过UI通过附加的屏幕截图配置触发器时,它不会在构建管道的部分成功中被触发。 >

以下是当我们确实触发了YML代码本身的设置时-即使部分成功构建也可以使用。 enter image description here

以下是我们仅在UI中触发设置的时间-如果部分成功构建,此方法将不起作用。 enter image description here

请告知我们,即使在通过UI设置触发器的情况下,即使构建部分成功,也应如何触发释放管道。

谢谢 沙拉德

2 个答案:

答案 0 :(得分:0)

请在此处查看文档

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/pipeline-triggers?view=azure-devops&tabs=yaml

以前,您可能已导航到YAML的经典编辑器 管道并在用户界面中配置构建完成触发器。而 该模型仍然有效,因此不再建议使用。推荐的 方法是直接在YAML中指定管道触发器 文件。经典编辑器中定义的构建完成触发器具有 各种缺点,现已在管道触发器中得到解决。

答案 1 :(得分:0)

同意Cece。

作为一种解决方法,我们可以添加任务电源外壳并调用API Queue build来触发构建。

步骤:

创建PAT令牌->将其保存在构建管道变量中,并秘密保存。

添加任务电源外壳并将条件设置为Even if a previous task has failed, even if the build was canceled

enter image description here

Power Shell脚本:

$token = "$(pat)"
$url = "https://dev.azure.com/{Org name}/{project name}/_apis/build/builds?api-version=6.1-preview.6"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))


$JSON = @"
{
  "definition": {
    "id": {Build definition ID}
  }
}
"@

$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -ContentType application/json -body $JSON
write-host $response

结果:

enter image description here