首页 > 解决方案 > 从 AzureDevOps YAML 管道中的所有工件(工件名称)下载所有文件

问题描述

我有一个带有一些阶段的管道,例如

Build -> Dev -> Test -> Prod

构建阶段为系统的不同部分生成一些 nuget。由于这种情况发生在不同的工作中,因此会发布一些工件名称,例如:

server\server.nupkg
client\client.nupkg
auth\auth.nupkg

然后在以下阶段使用这些内容,下载、将变量替换应用于某些配置并将配置到环境的新 nuget 作为 drop 发布。

例如,测试阶段有一项工作是在所需的 nuget 中转换配置并将其作为管道工件发布。因此,此时孔管道的工件如下所示:

server\server.nupkg
client\client.nupkg
auth\auth.nupkg
Test
  server.nupkg
  client.nupkg
  auth.nupkg

当涉及到 prod 阶段时,我想从除测试工件名称之外的所有工件名称中下载所有* .nupkg

我尝试在“DownloadPipelineArtifact”任务中使用排除模式,但没有成功:

- task: DownloadPipelineArtifact@2
  displayName: Download nugets
  inputs:
    buildType: 'current'
    itemPattern: |
      '*/*.nupkg'
      '!Test'
      '!Test/*.nupkg'
    targetPath: '$(MyDirectory)/nugets'

有任何想法吗?

标签: azure-devopsazure-pipelines-yaml

解决方案


如果server、和是不同的工件client,那么您应该能够单独下载前三个,或者通过使用“排除”文件匹配模式在单个任务调用中完成,第一段是工件名称。请参阅在 Azure Pipelines 中发布和下载工件 | 多个工件authTest

示例 #1,单独下载工件:

- download: current
  artifact: server

- download: current
  artifact: client

- download: current
  artifact: auth

尽管根据当前文档,以下示例应该可以工作,但它没有。看起来文档不正确。有关详细信息,请参阅此问题:

示例 #2,使用文件匹配模式下载工件:~~

注意递归通配符的双星号,否则多行 YAML 字符串中不包含引号。

- download: current
  patterns: |
    **/*.nupkg
    !Test/**

推荐阅读