Azure DevOps ArchiveFiles@2任务:如何归档其他仓库文件至同一ZIP
实现方案:将另一个Azure DevOps仓库文件加入归档包
完全可以通过Azure DevOps流水线任务实现,具体步骤如下:
1. 拉取第二个Azure DevOps仓库
默认流水线仅会拉取当前YAML文件所在的仓库,需添加checkout任务拉取目标仓库到流水线工作目录:
- checkout: git://<你的项目名称>/<第二个仓库名称>@<目标分支> path: 's/second-repo' # 指定拉取路径,避免与主仓库文件冲突
2. 调整归档任务包含双仓库文件
有两种方式实现归档合并:
方式一:直接指定多路径归档
修改原ArchiveFiles@2任务的rootFolderOrFile参数,同时包含主仓库与第二个仓库的路径:
- task: ArchiveFiles@2 displayName: "terraform file archive" inputs: rootFolderOrFile: | $(Build.Repository.LocalPath) $(Build.SourcesDirectory)/second-repo # 对应checkout任务指定的路径 includeRootFolder: false archiveType: zip archiveFile: $(Build.ArtifactStagingDirectory)/archive.zip replaceExistingArchive: true verbose: true
方式二:先合并文件再归档
若需要将两个仓库的文件放在归档包的同一层级(无仓库路径区分),可先通过CopyFiles任务将文件合并到临时目录,再归档:
# 创建临时合并目录 - script: mkdir $(Build.SourcesDirectory)/combined-files displayName: "Create combined files directory" # 复制主仓库文件到合并目录 - task: CopyFiles@2 displayName: "Copy main repository files" inputs: SourceFolder: $(Build.Repository.LocalPath) Contents: '**' TargetFolder: $(Build.SourcesDirectory)/combined-files # 复制第二个仓库文件到合并目录 - task: CopyFiles@2 displayName: "Copy second repository files" inputs: SourceFolder: $(Build.SourcesDirectory)/second-repo Contents: '**' TargetFolder: $(Build.SourcesDirectory)/combined-files # 归档合并后的文件 - task: ArchiveFiles@2 displayName: "terraform file archive" inputs: rootFolderOrFile: $(Build.SourcesDirectory)/combined-files includeRootFolder: false archiveType: zip archiveFile: $(Build.ArtifactStagingDirectory)/archive.zip replaceExistingArchive: true verbose: true
注意事项
- 确保流水线使用的服务账号拥有第二个Azure DevOps仓库的读取权限,否则无法拉取文件。
内容的提问来源于stack exchange,提问作者tester81
相关产品推荐
相关产品推荐

