1

我们为更昂贵的编译器/工具使用浮动许可证,以便我们可以进行本地开发以及生产构建。许可证管理器 (flexLM) 有一个我们可以查询的 api,因此我们可以阻止许可证。但是,我找不到一种机制,可以使我的管道根据辅助变量的状态或脚本的返回值或类似的东西排队。

这意味着我可以在安装了编译器的任何机器上启动构建,但如果许可证不可用,它将失败,我将不得不重新启动管道。如果我自动执行此操作,我将有效地阻止该机器,直到许可证可用。

有什么我错过的可以实现“排队直到许可证可用”之类的事情吗?

谢谢你,曼努埃尔

4

1 回答 1

2

我们可以在管道定义中添加第一个任务power shell并在变量选项卡中定义新变量,例如Value:true,然后添加脚本以检查许可证状态,如果许可证可用,则将变量设置Value为 true,如果许可证不可用,则设置变量Value为 False。然后eq(variables['{variable name}'], '{variable value}')在第二个任务中添加条件。

配置后,如果您的许可证可用,则管道将成功运行。

或者我们可以先检查许可证,然后调用下面的脚本来排队构建管道。

$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
于 2020-11-13T10:15:35.820 回答