我有一个带有一些阶段的管道
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'
有什么想法吗?
答案 0 :(得分:0)
如果 server
、client
、auth
和 Test
是不同的工件,那么您应该能够单独下载前三个或在单个任务调用中完成通过使用“排除”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/**
罢工>