azure-devops - 如何从运行构建的拉取请求中访问工件?

标签 azure-devops

我正在将 azure 用于 Windows 应用程序,因此我实际上不需要使用 CD,因为这并不真正相关。我们最终计划迁移到云端,但目前情况并非如此。

我现在已经将我的 .net (c#) 构建作为构建管道运行,并且我有一个开发分支,该分支用于合并更改。我想要的是,当拉取请求成功完成时,测试人员能够拾取为特定错误或产品积压项目创建的构建工件。如果没有发布管道,这可能吗?我目前没有允许我创建发布管道的订阅。

最佳答案

How can I access the artefact from a pull request for which a build was run?

确实,正如Lucas所说,如果我们从pull request开始来解决这个问题,确实是很难的。但我们可以尝试逆向思维,从构建管道开始。

Azure DevOps 为我们提供了一些 predefined variables ,例如 Build.BuildIdSystem.PullRequest.PullRequestId

因此,我们可以使用 REST API Pull Requests - Update在构建管道中使用工件链接更新注释。

PATCH https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests/{pullRequestId}?api-version=5.1

由于当前构建是由拉取请求触发的,因此我们可以使用预定义变量System.PullRequest.PullRequestId来直接获取pullRequestId

现在,我们只需要获取工件的链接,我们可以使用 Artifacts - Get获取工件信息:

GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/artifacts?artifactName={artifactName}&api-version=4.1

我们可以通过预定义变量Build.BuildId获取buildId,然后我们就得到下载URL:

enter image description here

所以总结我的解决方案的想法是在构建管道中使用 REST API Pull Requests - Update 来更新 Pull 请求的注释,其中包含工件的下载路径。

注意:您还可以在构建管道的 REST API 任务中添加自定义条件:

and(succeeded(), eq(variables['Build.Reason'], 'PullRequest'))

因此,通过此设置,只有拉取请求触发的构建才会执行此 REST API 任务。

希望这有帮助。

关于azure-devops - 如何从运行构建的拉取请求中访问工件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61897894/

相关文章:

docker - 如何将 Azure Web 应用移至容器

azure - 如何在azure pipeline yaml文件的maven目标中添加标签

git - VS 2013 + Git + Visual Studio Online + 一个项目中的多个 Repos

sql - Azure DevOps 托管代理 : The 'SQLNCLI11.1' provider is not registered on the local machine error

使用发布配置文件服务连接执行时 Azure DevOps 发布管道失败

powershell - 抛出了 'Microsoft.Rest.Azure.CloudException' 类型的异常

ssl - TFS 2017,HTTPS 绑定(bind)失去控制台权限?

azure-devops - VSTS不支持添加标签时自动发布吗?

azure - 如何查看 Azure 中 AKS 群集中附加的 ACR

azure-devops - 是否可以在 VSTS 上为不同环境(阶段)共享任务?