我想循环所有相关阶段的输出,并检查是否有任何一个被设置为一个特定的值,这将表明有问题。这是可能的,如果是这样,怎么做?
除了在工作环境中使用stageDependencies
之外,我很难找到任何有关stageDependencies
的相关文档。我知道下面的代码不起作用,但我已经尝试了一些变体,我甚至没有看到stageDependencies
对象。
- task: PowerShell@2
displayName: Check for Failures
inputs:
targetType: inline
script: |
foreach ($dependency in $[stageDependencies]) {
foreach ($job in $dependency) {
foreach ($output in $job.outputs) {
if ("$output" -eq "Started") {
write-host "##vso[task.logissue type=error]Task failed in a previous step"
}
}
}
}
字符串
2条答案
按热度按时间xwbd5t1u1#
还需要从前面的阶段中获取所有变量的列表,结果通过在管道中将
stageDependencies
转换为JSON,然后在Powershell中返回到对象来解决问题。下面是一个流水线的例子,它在第一阶段设置了两个变量,并在第二阶段通过初始变量名
someVariable
和another.variable.with.dots
读取它们,而不需要使用阶段/作业/步骤名称。字符串
在它打印的结果中
型
svujldwt2#
管道可以通过logging命令输出变量,但变量只能是字符串:
https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch#set-variables-in-scripts
此方法设置的所有变量都被视为字符串。
解析字符串并将其放入数组并不难,只需使用字符串类型附带的函数(split())来拆分和恢复即可。
下面是一个示例:
字符串
测试结果:
的数据