azure - 从另一个管道构建下载工件内容
问题描述
我有两个 azure devops 管道,如下所示:
- 第一个创建一个名为“AncientArtifact-1.2.0.$(Build.BuildId)”的工件。
- 第二个是尝试使用配置如下 的下载构建工件任务来使用此工件:
这将在第二个管道构建的 $(CustomDestinationFolder) 内创建一个名为“AncientArtifact-1.2.0.12345”的文件夹(第一个管道最近的 BuildId=12345)。
我想将上述文件夹重命名为“ancient”之类的名称,并将其移动到第二个管道构建中的另一个目录,以包含在第二个管道工件中。
我尝试使用复制文件任务,但问题是我不知道下载的工件文件夹的名称,因此我只能将其父 $(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'
推荐阅读
- linux - 稳定安装 - (读取 rustc 版本时出错)
- razor - asp.net核心剃须刀页面中的防伪令牌?
- ios - iPhone 设备轮换上的弹出窗口更改
- makefile - 使用 makefile 进行自动化测试
- java - 在java中安排任务和监视它们的最佳方法是什么
- php - 自动将目录中的某些文件类型移动到其他文件类型
- performance - 读取csv文件时的java.Nullpointer性能测试jmeter
- reactjs - 在 Formik 中一段时间后是否可以超时并隐藏表单的错误消息?
- ios - iOS App 中的 UIViews 被模拟器裁剪
- rust - rust 和 vec 迭代器 - 如何过滤