从所有工件(工件名称)下载所有文件(AzureDevOps YAML 管道中的一个除外)

时间:2021-05-17 09:47:10

标签: azure-devops azure-pipelines-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 阶段时,我想从 Test 工件名称中的所有工件名称中下载所有 *.nupkg

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果 serverclientauthTest 是不同的工件,那么您应该能够单独下载前三个或在单个任务调用中完成通过使用“排除”file matching pattern,第一段是工件名称。见Publish and download artifacts in Azure Pipelines | Multiple artifacts

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

- download: current
  artifact: server

- download: current
  artifact: client

- download: current
  artifact: auth

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

<打击> Example #2,使用文件匹配模式下载工件:~~

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

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