Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure devops 使用类似信号量的条件进行管道作业排队_Azure Devops_Azure Devops Self Hosted Agent_Flexlm - Fatal编程技术网

Azure devops 使用类似信号量的条件进行管道作业排队

Azure devops 使用类似信号量的条件进行管道作业排队,azure-devops,azure-devops-self-hosted-agent,flexlm,Azure Devops,Azure Devops Self Hosted Agent,Flexlm,我们对更昂贵的编译器/工具使用浮动许可证,这样我们就可以进行本地开发和生产构建。许可证管理器(flexLM)有一个我们可以查询的api,因此我们可以阻止许可证。但是,我找不到一种机制,可以根据辅助变量的状态或脚本的返回值或诸如此类的内容使管道排队 这意味着我可以在安装了编译器的任何机器上启动构建,但如果许可证不可用,它将失败,我将不得不重新启动管道。如果我自动这样做,我将有效地阻止该机器,直到许可证可用 我是否错过了什么可以实现“排队直到许可证可用”之类的事情 谢谢,, Manuel我们可以在管

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

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

我是否错过了什么可以实现“排队直到许可证可用”之类的事情

谢谢,,
Manuel

我们可以在管道定义中添加第一个任务
power shell
,并在变量选项卡中定义新变量,例如
Value:true
,然后添加脚本以检查许可证状态,如果许可证可用,则将变量
Value
设置为true,如果许可证不可用,将变量
值设置为False。然后在第二个任务中添加条件
eq(变量['{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

我喜欢这种方法!但如果没有许可证,我看不出它将如何发展。如果许可证不可用,生成就不会排队?好的,但这意味着我们必须手动继续触发此过程,直到许可证可用为止,不是吗?如果您使用condition,构建将运行并失败,您可以参考此了解更多详细信息。如果您使用的是脚本,脚本共享只是将构建排队,您需要添加判断语句来检查许可证状态,例如If(){enter the script}。如果答案有用,您可以将其作为答案,这样它可以帮助其他遇到相同问题的社区成员,我们可以归档此线程,谢谢,我只是想看看这个问题现在是否还在阻碍你?这个问题有更新吗?嗨!我认为问题仍然存在。您建议的解决方案在不破坏构建的情况下使管道成功率看起来很糟糕。它类似于一台机器,会触发azure cli来检查许可证并启动相应的构建。但似乎azure主服务应该触发构建,而不是让管道调用管道。。?!