我有两个特工在我的释放计划中。第二代理只应根据第一个代理的输出来运行。
第一代理代码如下
ssh task:
echo "##vso[task.setvariable variable=isNextExecutable;isOutput=true]true"第二代理有以下自定义条件
and(succeeded(), eq(variables[isNextExecutable], 'true'))此外,我尝试使用API(遵循如何从发布任务修改Azure DevOps发布定义变量?)更新环境变量,但是这些变量正在更新,只有发布管道正在完成。
我的问题:
1)如何根据第一代理输出的自定义条件执行代理?
2)是否可以在任务级别上添加多个自定义条件?如果成功地执行了前一个任务,并且基于在同一代理中的前一个任务中设置的值,则应该执行该任务。
发布于 2020-01-13 11:08:26
经过如此多的调试后,我在PowerShell脚本中为错误提供了资金。这可能对其他人有帮助。
若要在完成发布管道执行后更新发布定义,请执行以下操作。
https://vsrm.dev.azure.com/{org}/{project}/_apis/Release/definitions**/$(Release.ReleaseId)?api-version=5.1若要在执行发布管道期间更新发布定义,请在URL下面使用,但这些更改在同一代理程序中不可用。如果要使用修改后的值,则必须创建单独的代理。
https://vsrm.dev.azure.com/{org}/{project}/_apis/release/releases/$(Release.ReleaseId)?api-version=5.1发布于 2020-01-13 10:22:27
如何根据第一个代理输出的自定义条件执行代理?
对于此问题,如果您不使用yaml发布管道,恐怕这是不可能的。
注意到,更新后的变量值的作用域为正在执行的作业,并且不跨作业或阶段流动。
这在官方的文档中有说明。您可以尝试在Azure DevOps中使用YAML创建DevOps管道,以便您可以使用多任务输出变量在作业之间传递变量值。
作为解决办法,您可以在发布定义变量中定义一个变量,然后使用REST (定义-更新)更新代理作业1中的发布定义变量的值,在下一个代理作业中使用发布定义变量的更新值,有关详细信息,请参阅这。
是否可以在任务级别上添加多个自定义条件?
对于这个问题,答案是yes,您只需要使用类似于此##vso[task.setvariable variable={variableName};isOutput=true]{variableValue}的脚本将其输出到以下任务。

在下列任务中:


发布于 2020-07-19 12:30:08
如果要在任务组中使用变量,可以设置isOutput=false并使用表达式$(变量名)进行引用。
https://github.com/MicrosoftDocs/azure-devops-docs/issues/6983
https://stackoverflow.com/questions/59680439
复制相似问题