能否将Azure DevOps流水线的构建产物复制到对应代码仓库中
免责声明:通常不建议采用该操作,更推荐使用Azure Artifacts!
你当前的配置无法实现预期效果,PublishBuildArtifacts@1任务的TargetPath参数是指定产物在Azure DevOps平台产物服务中的存储路径,不会将文件写入你当前流水线的源码目录,更不会自动同步到远程代码仓库。
要实现将zip产物提交到代码仓库,需要按以下流程调整配置:
- 第一步:用
CopyFiles@2任务将生成的zip包复制到源码对应的目录 - 第二步:执行git命令提交新增的zip文件并推送到远程仓库
调整后的完整配置示例如下:
- task: ArchiveFiles@2 inputs: rootFolderOrFile: '$(build.artifactstagingdirectory)\MyFolder' includeRootFolder: true archiveType: 'zip' archiveFile: '$(Build.ArtifactStagingDirectory)\zipfolder/$(Build.BuildId).zip' replaceExistingArchive: true # 新增:复制zip包到源码目录 - task: CopyFiles@2 inputs: SourceFolder: '$(Build.ArtifactStagingDirectory)\zipfolder' Contents: '**/*.zip' TargetFolder: '$(Build.SourcesDirectory)\MyFolder' # 新增:提交文件到远程仓库 - script: | git config user.name "Azure DevOps Pipeline" git config user.email "devops@example.com" git add $(Build.SourcesDirectory)\MyFolder\*.zip git commit -m "feat: add build artifact zip $(Build.BuildId)" git push origin HEAD:$(Build.SourceBranchName) workingDirectory: $(Build.SourcesDirectory) # 原有的发布产物任务可按需保留 - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact: drop' inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)\zipfolder'
注意:你需要给流水线服务账号开通仓库的贡献权限,否则git push会失败;频繁提交二进制zip文件会大幅增加仓库体积,降低代码拉取效率,非特殊情况不建议这么操作。
内容的提问来源于stack exchange,提问作者Marko Marinkovic
相关产品推荐
相关产品推荐

