如何从 Azure 管道内的 blob 存储下载文件?

How can I download a file from blob storage inside an Azure pipeline?

我正在尝试下载已上传到 Azure blob 存储的文件,我想在 Azure Pipelines 构建期间使用该文件。

我正在使用 windows-latest Microsoft 托管的虚拟机进行构建。

我已经尝试制作一个 powershell 脚本并使用 azcopy,但我无法让它进行身份验证。我试过浏览文档,但有太多的术语、首字母缩略词和不同的做事方式,以至于我迷路了。似乎因为我使用的是 Azure 提供的虚拟机,所以我应该能够以某种方式使用内置身份验证而无需传递凭据,但我无法弄清楚。我尝试了 azcopy login --identity 但这也没有用。我还通过 Azure Powershell 尝试 运行,但这并没有什么不同

在我的管道的一部分中,我使用工具安装程序任务来安装 java JDK——我所要做的就是向它传递一个服务连接,它可以正常工作。 JDK 和安装程序都在同一个 blob 中,所以我可以以某种方式使用服务连接进行身份验证吗?

您可以尝试在 Azure cli 任务中执行 az storage blob download 命令从 Azure Blob 存储下载文件:

steps:
- task: AzureCLI@1
  displayName: 'Azure CLI '
  inputs:
    azureSubscription: {service connection}
    scriptLocation: inlineScript
    inlineScript: |
     mkdir $(Build.SourcesDirectory)\BlobFile
     az storage blob download --container-name $(containername) --file $(Build.SourcesDirectory)\BlobFile --name "{file name}" --account-key $(accountkey) --account-name $(accountname)

使用mkdir在当前目录创建一个文件夹,然后从blob下载文件并保存到这个文件夹中。服务连接已集成到此任务中,因此您可以配置服务连接以连接到您的 Azure blob。然后 select 在此 Azure cli 任务中。