Развертывание веб-приложения в службах приложений Azure - с помощью подключения диспетчера ресурсов

У меня есть конвейер Azure, который создает основной проект asp-net, создает из него образ докера и передает его в реестр контейнеров Azure.

Этот трубопровод сделан из azure-pipelines.acr.yml файл. Каждая операция git push, которую я выполняю в своей ветке Deployments, превращается в новую сборку в мой конвейер.

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

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

Я читал, и мне нужно выполнить непрерывное развертывание, используя мой конвейер Azure. В моем azure-pipelines.acr.yml У меня есть рабочий процесс конвейера CI со следующими шагами:

pool:
  vmImage: 'ubuntu-16.04' # other options: 'macOS-10.13', 'vs2017-win2016'

variables:
  buildConfiguration: 'Release'
  imageName: 'zcrm365:$(Build.BuildId)'
  dockerId: 'zcrm365' # This is my registry name access key
  dockerPassword: 'my password' # Password access key  
  # I should create an environment variables to dockerId and dockerPassword


steps:
# Build a docker image
- script: |
    docker build -t $(dockerId)/$(imageName) -f ZAccountSyncService/Dockerfile .  # add options to this command to meet your needs 
    docker build -t $(dockerId).azurecr.io/$(imageName) -f ZAccountSyncService/Dockerfile .
    docker login -u $(dockerId) -p $(dockerPassword) $(dockerId).azurecr.io
    docker images
    docker push $(dockerId).azurecr.io/$(imageName)


##### DEPLOY A WEB APP ########
- script: dotnet publish --output $(Build.ArtifactStagingDirectory)  

# Publish the output of our build to Azure Pipelines
- task: PublishBuildArtifacts@1

- task: DotNetCoreCLI@2
  inputs:
    command: publish
    # our repository seems has no web project
    publishWebProjects: False
    # We should specify your .csproj in project(s) option.
    projects: "" 
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: True



# CREATING AN Azure App Service Deploy task 

- task: AzureRmWebAppDeployment@3 
  inputs:
    # Is this my ID Subscription? 
    azureSubscription: '4e65758d-dbf5-456f-bb55-6b92273772dd'

    WebAppName: 'zcrm-365'
    Package: $(System.ArtifactsDirectory)/**/*.zip 

И в моем конвейере сборки я получаю эту ошибку вывода:

Job Job: Step input azureSubscription references service connection ID SUBSCRIPTION which could not be found. The service connection does not exist or has not been authorized for use. For authorization details, refer to https://aka.ms/yamlauthz.

Я пытаюсь выполнить этот процесс, и у меня активна подписка Azure, но я не могу установить соединение с ней.

Как настроить подключение к службе для подключения к диспетчеру ресурсов Azure и, возможно, создать службу приложения?

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

1 ответ

Решение

Вы ссылались на правильную ссылку на документацию https://docs.microsoft.com/en-us/azure/devops/pipelines/library/connect-to-azure?view=azure-devops чтобы установить соединение путем создания новой службы подключение.

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

№ 1 Вы не создали сервисное соединение с именем '4e65758d-dbf5-456f-bb55-6b92273772dd'.

№ 2 Созданное вами подключение к службе не имеет разрешения на подключение к предполагаемой подписке Azure.

Вариант № 1:

Если проблема подпадает под вариант № 1, пожалуйста, обновите свой файл YML azureSubscription: 'YOURSERVICECONNECTIONNAME' (но не идентификатор подписки в этом случае). Для иллюстрации, пожалуйста, обратитесь по этой https://docs.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops.

Вариант № 2: Если проблема подпадает под вариант № 2, пожалуйста, предоставьте ниже информацию, чтобы диагностировать проблему лучше.

2а. Какой вариант вы использовали при создании подключения к услуге. Является ли это "Аутентификацией принципала службы" или "Аутентификацией по управляемому идентификатору"?

2b. Если это "Проверка подлинности участника службы", то какую опцию вы выбрали на "уровне области". Это либо "Подписка", либо "Группа управления"?

2c.Если это опция "Подписка" или "ManagementGroup", вы щелкнули "Использовать автоматизированную версию диалога подключения к услуге" и предоставили все детали, а затем нажали "Подтвердить подключение"? И было ли соединение успешно проверено?

Надеюсь это поможет!! Ура!!:)