如何以编程方式从 Azure DevOps 下载最新的构建项目?

How to download the latest build artifacts from Azure DevOps programmatically?

我有一个 .NET C# 应用程序,我想下载此 public Azure DevOps 项目的最新版本生成的最新工件:

https://dev.azure.com/LumiaWoA/Boot%20Shim/_build?definitionId=3

如何与 Azure DevOps 交互来下载此类任务的工件?

我想使用 HttpClient 使用一些特殊的东西下载压缩的工件 URL。

您需要为此使用 Azure DevOps REST Api。此休息调用从构建中检索工件:

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

此 REST 调用将为您提供最新版本:

GET https://dev.azure.com/{organization}/{project}/_apis/build/latest/{definition}?branchName={branchName}&api-version=5.0-preview.1

Here's an article (with some samples) 讨论如何向 API 进行身份验证。从代码的角度来看,它是一个简单的HTTP请求,所以应该很容易。

以下是使用 Azure DevOps 下载 DevOps 构建的最新工件的步骤 UI。

  1. 点击构建日志。
  2. 接下来,单击构建的摘要选项。
  3. 在第 2 步之后,在 UI 的右上角,可以看到 Artifacts 选项,因此请点击它。
  4. 接下来,select 下载最新版本的 ZIP 文件。

使用截至2019-11-09的测试版UI,步骤如下。

  1. 单击已完成的构建(不是整个管道),您将被带到 Build 页面上的 Summary 选项卡。
  2. 在最右边的顶部框中,单击 Artifacts 列下的 link。它是一个框的图标,上面有 1 published 这样的文本。然后您将被带到 Artifacts 页面。
  3. 该页面显示了所有可用的工件。单击下载图标下载任何工件。

Pipelines中选择一个成功的运行下钻到Agent job X选择那个agent,在那个agent的log信息中可以查到。

在代理 Job Information 中,由于 X artifact produced link:[=15=,可以得到一个 link 到可以下载项目的下载位置]

发布 > Select 发布

单击工件 link(蓝色,例如:20191125.1)

新屏幕是日志。在右上角,单击蓝色的 [Artifacts] 按钮。

选择 Drop,展开树,然后右键单击以下载您想要的文件(可能是构建的 zip)

这就是我使用 PowerShell 使其工作的方式。

$MyPat = '********************************'
$B64Pat = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":$MyPat"))
$h = @{'Authorization' = 'Basic ' + $B64Pat}
$response = Invoke-WebRequest -Uri "https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/artifacts?artifactName={artifactName}&api-version=4.1" -Method 'GET' -Headers $h
$response_json = ($response.Content | ConvertFrom-Json)
$response_artifact = Invoke-WebRequest -Uri $response_json.resource.downloadUrl -Method 'GET' -Headers $h

选择你的管道

Select 你的 运行.

现在查找已发布。点击它。如果那里有东西,你应该可以下载它。