Azure DevOps无法检索工件:已发布工件却无法查看
问题:发布工件后在另一个作业中无法通过
Build.ArtifactStagingDirectory找到内容 你在buildAnatomy作业中通过PublishPipelineArtifact@1成功发布了名为anatomy-artifact的工件,但在依赖该作业的deployBucket作业里执行ls -al '$(Build.ArtifactStagingDirectory)'时看不到任何内容,原因和解决方法如下:
原因
- Azure DevOps中每个作业都运行在独立的虚拟机或容器环境中,
$(Build.ArtifactStagingDirectory)是当前作业的本地临时目录,不同作业的这个目录完全隔离,不会自动同步内容。 - 发布工件到pipeline只是将工件上传到Azure DevOps的工件存储中,并不会自动复制到后续作业的本地目录,必须显式执行下载操作才能访问。
解决方案
在deployBucket作业的steps中添加DownloadPipelineArtifact任务,把发布的工件下载到当前作业的$(Build.ArtifactStagingDirectory)目录,修改后的YAML如下:
- job: deployBucket displayName: 'Deploy Bucket' dependsOn: buildAnatomy condition: eq(dependencies.buildAnatomy.result,'Succeeded') pool: vmImage: "ubuntu-20.04" steps: - task: DownloadPipelineArtifact@2 displayName: 'Download Anatomy Artifact' inputs: artifact: 'anatomy-artifact' path: '$(Build.ArtifactStagingDirectory)' - task: Bash@3 displayName: "Upload contents to bucket" inputs: targetType: "inline" script: | ls -al '$(Build.ArtifactStagingDirectory)'
添加下载任务后,工件会被同步到当前作业的$(Build.ArtifactStagingDirectory)下,此时执行ls命令就能看到发布的内容了。
内容的提问来源于stack exchange,提问作者dman
相关产品推荐
相关产品推荐

