如何通过Azure DevOps .NET SDK获取特定Build关联的Release?
我正在开发一款基于Azure DevOps .NET SDK的Web应用,核心需求是展示特定团队迭代的变更集(仅支持TFS):我会先查看任务关联的变更集及对应Build,检查Build的运行状态,现在还需要找到每个Build对应的Release。
Azure DevOps组织的Build页面里有个Release标签页,能直接展示该Build关联的Release及其阶段状态,说明微软有对应的实现逻辑。我用的是旧版XAML管道(非YAML),该标签页的链接示例为:https://dev.azure.com/organizationName/projectName/_build/results?buildId=22224&view=ms.vss-releaseManagement-web.deployments-tab,其中22224是目标Build的ID。
我想知道:是否有对应的SDK方法可以实现这个关联查询?如果SDK不支持,直接调用API也可以接受。
目前我获取Build信息的代码如下:
build = await buildClient.GetBuildAsync(projectId, int.Parse(buildId));
返回的Build对象里有RetainedByRelease属性,能判断该Build是否被Release保留,但就算Release失败,也无法从Build对象里拿到具体的关联Release信息。
我试过先查询所有Release再按Build定义ID过滤的方案,但这不太理想:多个Release管道可能会使用同一个Build定义生成的构件,而且Release的触发时间不确定——可能连续触发,也可能隔1天手动执行,按Build的FinishDate来过滤的效果很差,没法精准定位。
请问有没有办法精准找到特定Build对应的Release?
我当前使用的NuGet包版本如下:
<PackageReference Include="Microsoft.TeamFoundationServer.Client" Version="16.205.1" /> <PackageReference Include="Microsoft.VisualStudio.Services.InteractiveClient" Version="16.205.1" /> <PackageReference Include="Microsoft.VisualStudio.Services.Release.Client" Version="16.205.1" />
内容的提问来源于stack exchange,提问作者iBobb

