如何通过Azure DevOps NuGet为现有管道运行未执行的后续阶段
问题背景与需求
这是《如何通过Azure DevOps NuGet排队生成并仅运行特定阶段?》问题的后续,此前已完成《如何通过Azure DevOps NuGet运行管道并同时指定资源?》的实现。
最初需求是仅运行管道中的部分阶段,目前已实现该功能,现在希望在现有运行中追加运行原运行未包含的其他阶段。
当前遇到的问题
在Microsoft.Azure.Pipelines.WebApi.PipelinesHttpClient类型中找不到合适的方法来实现追加阶段的需求。
经典发布管道的实现方式
此前使用“经典”发布管道时,可轻松实现该需求,步骤如下:
- 使用
Microsoft.VisualStudio.Services.ReleaseManagement.WebApi.Clients.ReleaseHttpClient的CreateReleaseAsync方法创建发布 - 通过上述客户端的
UpdateReleaseEnvironmentAsync方法逐个部署到阶段,该方法接受发布ID作为输入
这种方式的优势在于可随时间执行分阶段部署,并能在仪表板上清晰查看特定发布版本的部署状态。
尝试的解决方案与不足
希望复用现有管道“运行”,因此查看了PipelinesHttpClient类型中可基于现有运行、修改阶段集启动新运行的方法,但看起来只能启动全新的管道运行——因为它仅接受管道标识符作为输入(还包括版本和任何资源)。虽然这种方式可行,但会导致状态仪表板杂乱,每个运行仅包含其特定的阶段集:

希望所有阶段状态能像经典发布管道那样,随时间追加显示在同一行中。
另外,调用pipelinesClient.GetRunAsync获取的Microsoft.Azure.Pipelines.WebApi.Run实例也无用,因为它仅包含属性,没有方法。
内容的提问来源于stack exchange,提问作者Morten Grøtan
相关产品推荐
相关产品推荐

