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

Azure devops 从所有工件(工件名称)下载所有文件,AzureDevOps YAML管道中的一个除外,azure-devops,azure-pipelines-yaml,Azure Devops,Azure Pipelines Yaml,我有一个管道,有一些阶段,比如 Build -> Dev -> Test -> Prod 构建阶段为系统的不同部分生成一些NUGET。由于这发生在不同的作业中,因此发布了两个工件名称,如下所示: server\server.nupkg client\client.nupkg auth\auth.nupkg 然后在以下阶段中使用它们:加载、对某些配置应用变量替换,并将配置的新nuget作为drop发布到环境中 例如,测试阶段有一个作业,用于在所需的nuget中转换配置,并将其

我有一个管道,有一些阶段,比如

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'

有什么想法吗?

如果
server
client
auth
Test
是不同的工件,那么您应该能够单独下载前三个工件,或者使用“exclude”在单个任务调用中完成,第一个段是工件名称。看

示例#1,分别下载工件:

-下载:当前版本
工件:服务器
-下载:最新
工件:客户端
-下载:最新
工件:auth

虽然,根据当前文档,下面的示例应该是可行的,但事实并非如此。看起来文档不正确。有关详细信息,请参阅本期:

示例#2,使用文件匹配模式下载工件:~~ 注意递归通配符的双星号和多行YAML字符串中不包含引号的情况

-下载:当前版本
模式:|
**/*努普克先生
!试验/**

你好@beatcracker,谢谢你的回复。我试过这个例子,但没有成功。似乎排除应用于工件名称内的文件。但不是工件名称本身。所以文件仍在下载中。@Diego,好奇的是,我将尝试设置一个测试管道来验证这一点,然后返回给您。@Diego我已经运行了一些测试,但它确实不起作用。我在代理回购协议中提出了一个问题,因为这与文档相矛盾:@Diego看起来文档是错误的,第二个示例不应该起作用。我更新了答案以反映这一点。嗨@beatcracker非常感谢你的帮助和更新!在上面的示例中,我有3个工件,但在我们的一个项目中,我们有10个以上的工件,因此我试图避免单独编写下载语句,并且依赖于显式名称。我想是给出了一个更长的YAML,但它可能更具声明性。