gpt4 book ai didi

azure-devops - 如何使用 REST Api 确定 Azure DevOps 发布管道何时结束?

转载 作者:行者123 更新时间:2023-12-05 07:23:52 25 4
gpt4 key购买 nike

我有一个触发构建的脚本。该构建之后是发布管道。在我的脚本中,我可以弄清楚发布的 url 是什么,但我不明白脚本如何决定发布管道何时完成。

假设没有交互式批准。仍然:

  1. 发布状态似乎停留在“事件”状态,如果所有阶段都已经收敛到某个最终状态,则无关紧要。
  2. 阶段可以是“notStarted”、“inProgress”、“rejected”、“cancelled”或“succeeded”。

我想可以通过对所有阶段的状态进行一些分析,同时考虑管道的拓扑结构来解决问题,但这似乎太复杂了。

是否有可能在脚本中等待,直到某个版本进入最终状态,从该状态不能进行任何更改?

编辑 1

我可以编写轮询循环。这就是我用来确定构建何时结束的方法。但是对于发布,我对停止条件有疑问 - 我只是不知道它是什么。

编辑 2

考虑以下管道:

       +---> A
/ \
Start + -[Promoted only if (*) is true]-> C ---> D
\ /
+---> B

(无手动批准)现在假设构建不满足条件 (*),因此发布在 A 和 B 上运行后有效停止,但不是 C。环境的状态将是:

  • A = 成功或拒绝
  • B = 成功或拒绝
  • C = 未开始
  • D = 未开始

那么,在这种情况下,等待循环停止的停止条件是什么?是否可以在不发现发布管道的拓扑结构的情况下进行?

最佳答案

不幸的是,没有任何阻塞的 API 调用。您需要在(例如 PowerShell)中编写一个循环来检查状态的变化。

Release 中有两个“状态”字段.

首先是 Release 的总体状态,例如,它被部署到两个环境中,然后被标记为“已放弃”并且不再是生产候选版本。您可以通过选择发布并选择“放弃”在 UI 中设置此状态。

第二个状态是针对每个正在部署的环境。每个 ReleaseEnvironment 都有一个 EnvironmentStatus .令人惊讶的是,那里没有“失败”状态,但您对任何不是“未开始”和“成功”的事情感兴趣。 (也许 partiallySucceeded 是一个指示器,表明某些事情失败了,但没有将整个环境标记为失败?)。

如果启用了部署前或部署后批准,则可能需要考虑第三种状态。这些在preDeployApprovals状态(ApprovalStatus)和postDeployApprovals节点。

关于azure-devops - 如何使用 REST Api 确定 Azure DevOps 发布管道何时结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55715911/

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