azure - 从另一个管道构建下载工件内容

标签 azure azure-devops azure-devops-extensions

我有两个 azure 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) 指定为源文件夹,因此我的目标文件夹将类似于 $(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/

相关文章:

c# - 通过列表中的对象属性进行 DocumentDB Linq 查询

powershell - 所需状态配置与 Azure ARM - 它们是否互补?

azure - 在 Azure DevOps Pipeline 摘要页面上显示自定义徽章或文本

git - Azure DevOps - 将 master 分支与过去的 master 分支进行比较

azure-devops - 如何在Azure DevOps中的yaml中指定清理所有生成目录?

删除时的 Azure DevOps 扩展流程

sql - Azure 数据工厂 - SQL 到嵌套 JSON

azure-devops - 创建一个自动 PR 并完成它 Azure DevOps

azure-devops - 如何调整 VSTS 仪表板小部件的大小

Azure Cosmos session 一致性与同一区域中具有多个实例的微服务的有界陈旧一致性