gpt4 book ai didi

azure - 在 Azure Pipelines 中出现错误时继续(但仍报告为错误)

转载 作者:行者123 更新时间:2023-12-04 00:23:41 29 4
gpt4 key购买 nike

我有一个由 YAML 文件定义的 Azure Pipelines 管道,该文件编译、运行一些测试,然后发布测试结果。显然不可能在不编译的情况下运行测试,因此编译任务显然设置了 continueOnError: false 。但是,我仍然希望在测试失败时发布测试结果,因此我在测试任务下将 continueOnError 设置为 true

这似乎有效,直到我的一项测试失败了。然后,Azure 并没有使构建失败,而是报告了一条警告。我怎样才能让它在整个构建过程中仍然出错,但也执行剩余的任务?

最佳答案

更新:

Microsoft 已添加 some new documentation因为我发布了这个答案,它比我更好地解释了它:

A given task or job can't unilaterally decide whether the job/stage continues. What it can do is offer a status of succeeded or failed, and downstream tasks/jobs each have a condition computation that lets them decide whether to run or not. The default condition which is effectively "run if we're in a successful state".

Continue on error alters this in a subtle way. It effectively "tricks" all downstream steps/jobs into treating any result as "success" for the purposes of making that decision. Or to put it another way, it says "don't consider the failure of this task when you're making a decision about the condition of the containing structure".

<小时/>

原始答案:

我认为消除对几个 YAML 属性的确切作用的误解很有用(因为这也让我着迷)。该问题询问了现有答案未涵盖的 YAML 管道,因此我想我也应该给出一个示例。

  • continueOnError 确定当前任务在遇到错误(带有警告)时是否继续,或者是否立即失败。尽管该名称可能具有误导性,但它并不能(直接)确定是否继续执行后续任务。
  • condition 决定任务是否运行。默认情况下,如果上一个任务失败,则此任务将不会运行。您可以覆盖此设置并让任务运行,而不管之前的失败如何。

因此,如果您的测试失败,则无需使用 continueOnError,只是为了运行“发布测试结果”任务,您无论如何都可以让它运行。

我不知道您的管道的具体结构,但希望这能演示一个示例:

trigger:
- main

pool:
vmImage: ubuntu-latest

steps:
- script: 'echo "compiling....."; exit 0'
displayName: 'Compile'

- script: 'echo "testing....." ; exit 1' # exit 1" simulates task failure
displayName: 'Run Tests'
condition: succeeded()

- script: 'echo "publishing test results....."'
displayName: 'Publish Results'
condition: succeededOrFailed() # Run task even if previous ones fail

结果是整个管道失败:

Overall pipeline failure

我们可以看到测试结果仍然发布在管道分割中(尽管之前的步骤失败了,但这里不需要 continueOnError):

Detailed pipeline breakdown

您可以使用 YAML 示例中的退出代码来确定哪些任务失败。我发现 condition 字段中具体内容的文档有点差,但具体来说,我建议您引用 Conditions , Expressions ,和Expressions#Job status check functions .

关于azure - 在 Azure Pipelines 中出现错误时继续(但仍报告为错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58811721/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com