gpt4 book ai didi

azure - 使用依赖项和条件的 Yaml 多阶段运行

转载 作者:行者123 更新时间:2023-12-02 18:46:31 26 4
gpt4 key购买 nike

如果 INT 的前一个阶段已成功通过,我需要运行“安全”阶段。我尝试使用依赖项和条件,但找不到解决方案。

enter image description here

最佳答案

I have a need to run the "Secure" stage if one of the previous stages of INT was sucessfully passed.

恐怕目前还没有这样的 YAML 语法来实现这一点。

由于我们需要为阶段设置多个依赖Secure:

- stage: Deploy
dependsOn:
- INT_API
- INT_FuncIntergration
- INT_Web
condition: or(succeeded('INT_API'), succeeded('INT_FuncIntergration'), succeeded('INT_Web'))

限制:

此方法只能用于前一个阶段成功后,才会执行本阶段,但当前阶段需要在前面所有阶段都执行完毕后才执行。如果您需要只要前一个阶段成功就执行当前阶段,则此方法仍然不够。

这是因为依赖项没有“OR”语法。我们无法添加依赖条件,例如:

 - stage: Deploy
${{ if eq(result.INT_API, successed) }}:
dependsOn:
- INT_API
- INT_FuncIntergration
- INT_Web
condition: or(succeeded('INT_API'), succeeded('INT_FuncIntergration'), succeeded('INT_Web'))

因为YAML编译时就解析了条件,但此时前一阶段的运行结果还没有出来。

您可以将此请求条件“OR”提交到我们的 UserVoice 网站 ( https://developercommunity.visualstudio.com/content/idea/post.html?space=21 ),这是我们提供产品建议的主要论坛。感谢您帮助我们构建更好的 Azure DevOps。

解决方法:

解决方案的主要思想是:您可以尝试使用 [] 设置 Secure 阶段的依赖,然后在其他任务之前添加一个内联 powershell 任务。此任务将调用 REST API Definitions - Get监控当前发布管道中的所有阶段是否处于进程中和队列状态。如果是,则等待 30 秒,然后再次循环,直到当前发布管道中的所有其他阶段都没有进程内和队列状态。然后接下来执行其他任务将被执行。

你可以查看我的previous ticket详细信息:

关于azure - 使用依赖项和条件的 Yaml 多阶段运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67364891/

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