Azure Artifacts - 下载特定版本的maven artifact

Azure Artifacts - Download a specific version of maven artifact

我们正在为我们的 CI/CD 流程使用 azure devops。很多时候,为了进行一些自定义构建,我们需要从 artifact repo 下载特定的 maven jar。

有没有办法(命令行或API)做同样的事情?

同样,问题是关于从 azure artifacts 下载特定的 jar。

Azure Artifacts - Download a specific version of maven artifact

答案是肯定的。我们可以使用 REST API Maven - Download Package 从 azure artifacts 下载特定的 jar:

GET https://pkgs.dev.azure.com/{organization}/{project}/_apis/packaging/feeds/{feedId}/maven/{groupId}/{artifactId}/{version}/{fileName}/content?api-version=5.1-preview.1

首先,我们需要得到feedId。我们可以使用 REST API Feed Management - Get Feeds 来获取 feedId:

GET https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/feeds?api-version=5.1-preview.1

注意:如果提要是在项目中创建的,则必须提供项目参数。如果提要未与任何项目相关联,请从请求中省略项目参数。

对于URL中的其他参数,我们可以从包的概述中获取。 Select 压缩包并打开压缩包,我们可以得到如下视图:

现在,我们有了所有参数,feedIdgroupIdartifactIdversionfileName

所以,我们可以使用 REST API 和 -OutFile $(Build.SourcesDirectory)\myFirstApp-1.0-20190818.032400-1.jar 来下载包(内联 powershell 任务):

$url = "https://pkgs.dev.azure.com/<OrganizationName>/_apis/packaging/feeds/83cd6431-16cc-480d-bb4d-a213e17b3a2b/maven/MyGroup/myFirstApp/1.0-SNAPSHOT/myFirstApp-1.0-20190818.032400-1.jar/content?api-version=5.1-preview.1"
$buildPipeline= Invoke-RestMethod -Uri $url -OutFile $(Build.SourcesDirectory)\myFirstApp-1.0-20190818.032400-1.jar -Headers @{   
 Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
} -Method Get

由于我的 Maven 提要是一个组织范围的提要,我从 URL 中省略了项目参数。

结果:

我是这样找到的:

  1. 在 Azure 中打开 feed 页面,单击 Connect to feed

  2. 选择Maven,复制URL from Project setup > repository/url pom.xml 样本。

    应该是这样的:

    https://pkgs.dev.azure.com/YOUR-ORGANIZATION/_packaging/YOUR-FEED-NAME/maven/v1
    
  3. 将工件信息附加到 link:

    https://pkgs.dev.azure.com/YOUR-ORGANIZATION/_packaging/YOUR-FEED-NAME/maven/v1/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar
    

    提示:将其与 Maven 存储库中的比较:

    https://repo1.maven.org/maven2/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar