Задача Развернуть Артефакт в контейнере Хранение За пределами моей учетной записи - PullRequest
0 голосов
/ 25 октября 2019

В настоящее время я создаю CI для FrontEnd одного из наших клиентов.

Нам необходимо скопировать файл, поступающий из нашего репо, в учетную запись контейнера компании, управляющей операционной частью (мы предоставляем толькокод).

Итак, компания, которая будет управлять инфраструктурой, предоставила нам имя учетной записи хранения (testdeploy), имя контейнера (artifact-deply) и ключ (securekey).

Мне удалось подключиться к хранилищу через 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 для учетной записи контейнера, которая не входит в область моей подписки, зная, что у меня есть только одноимя учетной записи и ключ?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Что вам в основном нужно сделать, это создать и использовать подпись общего доступа (SAS) для развертывания ресурсов в этом контейнере больших двоичных объектов. Поскольку у вас есть ключ учетной записи хранения, вы можете создать токен SAS с помощью Azure Storage Explorer.

Затем использовать Azure Cloud Shell или Azure CLI на локальном компьютере для тестирования. Попробуйте скопировать файл в контейнер BLOB-объектов, используя токен SAS для авторизации. Если у вас есть проблемы с авторизацией с использованием токена SAS, вы также можете проверить доступ с помощью Azure Storage Explorer. Такие основные задачи широко известны и хорошо документированы.

Наконец, найдите способ запустить команду копирования файла, используемую при тестировании в конвейерной задаче Azure. Если Задание Azure File Copy не подходит для вашего варианта использования, используйте более общую задачу, например Задание Azure CLI . При чтении документов может оказаться, что он не поддерживает ваш вариант использования, хотя название задачи указывает на это. Я понимаю вашу точку зрения. Узнайте, как получить доступ к артефакту, предоставленному конвейером сборки, и скопировать файловые ресурсы в учетную запись хранения. Если это в принципе работает, узнайте, как его улучшить. Вуаля.

0 голосов
/ 29 октября 2019

Так что мне удалось это сделать.

Оказывается, вы не можете сделать это с помощью копии AzureFile, эта задача не может быть загружена в качестве контейнера вне вашей подписки.

Выдолжен использовать задачу 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). Я использовал ключ учетной записи, потому что у меня была ошибка с URL-адресом SAS, но я думаю, что вы легко можете использовать переменную Azur devops для передачи URL-адреса токена SAS.

И перед этим я создал задачу, чтобы сжать всепапка, так что легче управлять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...