[从另一个管道版本下载工件内容

问题描述 投票:0回答:1

我有两个蔚蓝的devops管道,如下所示:

  • 第一个创建名为“ AncientArtifact-1.2.0。$(Build.BuildId)”的工件。
  • 第二个尝试通过配置如下的Download Build Artifacts任务尝试使用此工件:enter image description here

这将在第二个管道构建的$(CustomDestinationFolder)内创建一个名为'AncientArtifact-1.2.0.12345'的文件夹(第一个管道,最新的BuildId = 12345)。

我想将上述文件夹重命名为'ancient',然后将其移动到第二个管道构建中要包含在第二个管道工件中的另一个目录。

我已经尝试过使用copy files任务,但是问题是我不知道下载的工件文件夹的名称,因此我只能将其父文件夹$(CustomDestinationFolder)指定为源文件夹,因此我的目标文件夹看起来像$(目的地文件夹)\ AncientArtifact-1.2.0.12345 *。使用flattenFolders选项将使所有内容变平,这不是我想要的。

想到一些方法:

  • 从工件名称中删除$(Build.BuildId)。这样,我知道下载的工件将具有的确切名称。问题是我想保留它。
  • 第二个管道中的自定义脚本将列出$(CustomDestinationFolder)内的文件夹,获取工件文件夹的名称,将其重命名为硬编码的“古代”名称。感觉有点黑。

是否有更好的方法来处理此问题?

azure azure-devops azure-devops-extensions
1个回答
0
投票

您也许可以通过复制文件任务和通配符来获得所需的内容。

但是如果您最终要重命名工件文件夹以包含在第二个管道中,那么我将在下载工件文件夹之后继续对其进行重命名。

如果它简单地解决了问题并且易于理解,我不会称其为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'
© www.soinside.com 2019 - 2024. All rights reserved.