我目前正在为其中一位客户的前端创建配置项。
我们需要从仓库中复制管理操作部分的公司的容器帐户中的文件(我们仅提供代码)。
因此,将要管理基础结构的公司已为我们提供了存储帐户名(testdeploy),容器名(人工制品)和密钥(安全密钥)。
我已经设法通过Azure Storage Explorer连接到存储,但是现在我需要通过CI在此容器上部署工件。
问题是,我不知道如何操作,也找不到有关如何进行操作的文档,每个文档都谈到要部署到同一订阅中的容器。
但是我没有这个容器的权限,我只有它的名称和密钥。
这是我已经设置的Yaml,我不知道我能不能帮忙:
steps:
- task: AzureFileCopy@2
displayName: 'AzureBlob File Copy'
inputs:
SourcePath: '$(System.DefaultWorkingDirectory)/_listes-Azure/buildtest'
azureSubscription: 'Paiement à l''utilisation(my_subscription)'
Destination: AzureBlob
storage: testdeploy
ContainerName: 'artifact-deploy/front'
AdditionalArgumentsForBlobCopy: 'securekey'
outputStorageUri: 'https://testdeply.blob.core.windows.net/'
outputStorageContainerSasToken: 'securekey'
当然,当我这样做时,我会收到此错误消息:
2019-10-25T10:45:51.1809999Z ##[error]Storage account: fprplistesdeploy not found. The selected service connection 'Service Principal' supports storage accounts of Azure Resource Manager type only.
由于它不在我的订阅范围内,因此无法访问。
我做错了什么?
我正在使用AzurFileCopy任务,对吗?
知道我唯一拥有的是一个帐户名和一个密钥,如何将AzurFileCopy任务设置到不在我的订阅范围内的容器帐户?
谢谢!
答案 0 :(得分:1)
您基本上要做的是创建并使用共享访问签名(SAS)将资源部署到此Blob容器中。由于您具有存储帐户密钥,因此可以使用Azure Storage Explorer创建SAS令牌。
然后在本地计算机上使用Azure Cloud Shell或Azure CLI进行测试。尝试使用SAS令牌将文件复制到Blob容器中以进行授权。如果使用SAS令牌的授权存在问题,则还可以使用Azure Storage Explorer测试访问。这样的基本任务是众所周知的,并有据可查。
最后找到一种方法来运行在Azure Pipeline任务中进行测试时使用的文件复制命令。如果Azure File Copy task不适合您的用例,请使用更通用的任务,例如Azure CLI task。通过阅读文档,尽管任务名称表明了这一点,但它可能不支持您的用例。我明白你的意思了。了解如何访问构建管道提供的工件并将文件资源复制到存储帐户。如果基本可行,请找出如何改进它。瞧!
答案 1 :(得分:0)
所以我设法做到了。
结果是,您无法通过AzureFile Copy进行操作,此任务无法作为订阅之外的容器上载。
您必须使用Azur CLI任务,这是我使用的脚本:
#!/bin/bash
az storage blob upload --container-name artifact --file $(System.DefaultWorkingDirectory)/artifact_deply/buildtest/front.zip --name front --account-key securekey
我更改了所有变量,但想法就在这里(我在azur devops的变量面板中声明了帐户名称)。 我使用了帐户密钥,因为SAS URL出错,但是我认为您可以轻松地使用Azur devops变量来传递SAS令牌URL。
在此之前,我创建了一个任务来压缩所有文件夹,因此更易于管理。