仅在特定的先前作业失败时才有条件地运行Azure DevOps作业

问题描述 投票:0回答:1

[在Azure DevOps中,我试图做到这一点,以便仅当特定的先前作业失败时才运行发布作业(而不是YAML管道作业)。运行作业的预定义条件之一是“仅当先前的作业失败时”,但这是不合适的,因为它包括所有先前的作业,而不仅仅是最后一个作业(或者更好的是,用户的作业)选择)。

请注意,this question专注于工作中的任务,而不是我要找的答案。

根据documentation中“如果先前的作业成功解决问题如何触发作业?”下的条件,我可以访问先前的作业的结果-

eq(dependencies.A.result,'SucceededWithIssues')

[查看以前版本的日志,我要检查的作业的AGENT_JOBNAMEPost Deployment Tests,因此这意味着我的情况应如下所示。但是,Azure DevOps甚至都不会让我保存我的版本-

not(eq(dependencies.Post Deployment Tests.result, 'succeeded'))

阶段“ Dev”中作业“交换插槽,部署后测试失败后返回作业”的工作条件无效:意外的符号:“部署”。

我尝试将作业名称括在引号中,但出现类似错误-

not(eq(dependencies.'Post Deployment Tests'.result, 'succeeded'))
not(eq(dependencies."Post Deployment Tests".result, 'succeeded'))

我也尝试使用下划线引用我的工作,这确实允许我保存发布,但随后在运行时导致错误-

not(eq(dependencies.Post_Deployment_Tests.result, 'succeeded'))

无法识别的值:'依赖'。

如何才能实现仅在特定的先前工作失败后才有条件地运行工作的目标?

azure-devops conditional-statements azure-pipelines-release-pipeline
1个回答
0
投票

只有在以下情况下,我才能实现有条件地工作的目标 先前的特定工作失败了?

1。您应该知道Yaml管道和Classic管道使用difference技术。

请参阅feature ability,它们具有不同功能。此外,尽管它们(Yaml,Classic Build,Classic Release)全部支持作业条件,但它们对条件具有非常不同行为。

Classic(UI)发布管道中不支持您正在尝试的eq(dependencies.'Post Deployment Tests'.result, 'succeeded')。是给Yaml的:

enter image description here

由于出现类似Unrecognized value: 'dependencies'的错误,这是预期的行为,因为Release管道中不支持作业依赖性。参见此old ticket

© www.soinside.com 2019 - 2024. All rights reserved.