我有两个 azure devops 管道,如下所示:
- 第一个创建名为“AncientArtifact-1.2.0.$(Build.BuildId)”的工件。
- 第二个尝试使用 Download Build Artifacts 来使用此工件。任务配置如下:
这会在第二个管道构建中的 $(CustomDestinationFolder) 内创建一个名为“AncientArtifact-1.2.0.12345”的文件夹(第一个管道最新的 BuildId=12345)。
我想将上述文件夹重命名为“ancient”之类的名称,并将其移动到第二个管道构建中的另一个目录以包含在第二个管道工件中。
我尝试过使用 copy files任务,但问题是我不知道下载的工件文件夹的名称,因此我只能将其父级 $(CustomDestinationFolder) 指定为源文件夹,因此我的目标文件夹将类似于 $(destinationFolder)\AncientArtifact-1.2.0.12345 *。 使用 flattenFolders 选项会展平所有内容,但这不是我想要的。
我想到了一些方法:
- 从工件名称中删除 $(Build.BuildId)。这样我就知道下载的工件的确切名称。问题是我想保留它。
- 第二个管道中的自定义脚本将列出 $(CustomDestinationFolder) 内的文件夹,获取工件文件夹的名称,将其重命名为硬编码的“古代”名称。感觉很hackish。
有没有更好的方法来处理这个问题?
最佳答案
您也许可以通过复制文件任务和通配符来获取您想要的内容。
但是,如果您最终想要重命名工件文件夹以包含在第二个管道中,我会在下载后重命名工件文件夹。
如果它能简单地解决问题并且易于理解,我不会称其为hackish。
- task: DownloadBuildArtifacts@0
inputs:
buildType: 'specific'
project: 'your-project'
pipeline: 'your-pipeline'
buildVersionToDownload: 'latest'
downloadType: 'specific'
downloadPath: '$(System.ArtifactsDirectory)\customLocation'
- task: PowerShell@2
inputs:
targetType: 'inline'
script: Get-ChildItem $(System.ArtifactsDirectory)\customLocation | Rename-Item -NewName 'ancient'
关于azure - 从另一个管道构建下载工件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60239944/