Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как развернуть контейнерное приложение Windows в службе приложений Azure из репозитория Azure Repos Git с помощью Azure Pipelines для непрерывной интеграции и доставки (CI/CD). Azure Repos и Azure Pipelines являются бесплатными службами Azure DevOps, которые позволяют размещать, создавать, планировать и тестировать код с помощью любой платформы и облака. Конвейер определяется как файл YAML в корневом каталоге репозитория.
Предварительные условия
- Учетная запись Azure с экземпляром реестра Azure Container Registry и веб-приложением, созданным в Azure App Service. Создание учетной записи Azure бесплатно.
- Организация и проект Azure DevOps с приложением Windows, выполняющимся в контейнере Docker, и вспомогательным файлом Dockerfile, загруженным в репозиторий Azure Repos в вашем проекте.
- Соответствующие роли пользователей или разрешения для создания ресурсов Azure и управления ими и Azure DevOps проектов, конвейеров, репозиториев и подключений к службам. Дополнительные сведения см. в разделе Manage security in Azure Pipelines.
Добавление подключения к службе
Перед созданием этого конвейера необходимо создать подключение службы Azure к Azure Container Registry. В Azure DevOps выберите Project Settings для проекта и создайте подключение службы, выполнив инструкции Create подключение к службе.
Чтобы создать подключение службы для этого проекта и конвейера, выберите Docker Registry, а затем Azure Container Registry в качестве типа реестра. После создания подключения службы скопируйте его идентификатор , который будет использоваться на следующем шаге.
Создание и настройка конвейера
Создайте и настройте конвейер для выполнения шагов по созданию контейнера, отправке в реестр и развертыванию образа в службе приложений.
Создайте конвейер, выполнив следующие действия.
- В проекте в Azure DevOps выберите Pipelines в меню навигации слева и выберите Create или Create Pipeline.
- На экране Где ваш код, выберите Azure Repos Git.
- На экране "Выбор репозитория" выберите репозиторий , содержащий приложение.
- На экране "Настройка конвейера" выберите "Начальный конвейер".
- Щелкните стрелку раскрывающегося списка рядом с "Сохранить и выполнить" в правом верхнем углу и выберите "Сохранить", а затем снова выберите "Сохранить". Еще не запускайте конвейер.
Создание переменных
Вы можете создавать переменные конвейера для повторного использования часто используемых значений или защищать защищенные сведения, к которым не обращаются другие пользователи. Дополнительные сведения см. в разделе "Определение переменных".
Выберите Изменить в правом верхнем углу на странице конвейера, а затем выберите Переменные в правом верхнем углу на странице редактирования.
На экране "Переменные" выберите "Создать переменную".
Добавьте следующие пары имен и значений, используя собственные сведения для значений-заполнителей. Нажмите кнопку ОК после добавления каждой переменной, а затем выберите, + чтобы добавить следующую переменную. Если значение является секретом, установите флажок , чтобы сохранить этот секрет значения.
- vmImageName: windows-latest
- imageRepository: <имя репозитория>
- dockerfilePath: $(Build.SourcesDirectory)/<folder-path>/Dockerfile
- dockerRegistryServiceConnection: <service-connection-ID>
После добавления переменных нажмите кнопку "Сохранить " на экране "Переменные " и снова нажмите кнопку "Сохранить " на странице конвейера.
Добавление задачи для сборки и отправки образа
Замените весь существующий код в начальном файле azure-pipelines.yml следующим кодом. Этот код добавляет задачу Docker, которая создает и отправляет образ в Azure Container Registry. Код использует $(<variable-name>) синтаксис для вызова переменных, настроенных ранее.
trigger:
- main
pool:
vmImage:
$(vmImageName)
stages:
- stage: Build
displayName: Build and push stage
jobs:
- job: Build
displayName: Build job
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
Добавить задачу развертывания для службы приложений
Добавьте задачу развертывания в Azure App Service. Для этой задачи необходимо указать имя подписки Azure, имя веб-приложения и имя реестра контейнеров.
Добавьте этап развертывания в файл azure-pipelines.yml , добавив следующий код в конец файла.
- stage: Deploy displayName: Deploy to App Service jobs: - job: Deploy displayName: Deploy pool: vmImage: $(vmImageName) steps:Поместите курсор в новую строку в конце файла и при необходимости щелкните значок "Показать помощник " справа, чтобы отобразить область задач . В области Tasks найдите и выберите задачу Azure App Service deploy.
На экране Azure App Service deploy выполните следующие сведения:
- Тип подключения Connection: выберите Azure Resource Manager.
- подписка Azure. Выберите имя и идентификатор подписки Azure. При необходимости выберите "Авторизовать".
- Тип службы приложения: выберите Web App for Containers (Windows).
- Имя службы приложений: выберите или введите имя веб-приложения службы приложений.
- Registry или Namespace: Введите имя экземпляра Azure Container Registry.
- Изображение. Введите имя репозитория, в котором хранится код.
Нажмите кнопку "Добавить". Следующий код добавляется к концу файла с вашими значениями, заменяющими заполнители.
- task: AzureRmWebAppDeployment@4 inputs: ConnectionType: 'AzureRM' azureSubscription: '<your subscription name (subscription ID)>' appType: 'webAppHyperVContainer' WebAppName: '<your App Service web app name>' DockerNamespace: '<your Azure Container Registry instance name>' DockerRepository: '<your repository name>'
Запуск конвейера
Конвейер теперь готов к запуску.
- Нажмите кнопку "Проверить и сохранить" и снова нажмите кнопку "Сохранить ".
- Нажмите кнопку "Выполнить" и снова нажмите кнопку "Выполнить ".
Конвейер включает в себя шаги по сборке и передаче образа контейнера Windows в Azure Container Registry и развертывание образа в службе приложений.
В следующем коде показан полный файл определения конвейера azure-pipelines.yml с примерами значений.
trigger:
- main
pool:
vmImage:
$(vmImageName)
stages:
- stage: Build
displayName: Build and push stage
jobs:
- job: Build
displayName: Build job
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
- stage: Deploy
displayName: Deploy to App Service
jobs:
- job: Deploy
displayName: Deploy
pool:
vmImage: $(vmImageName)
steps:
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: 'mysubscription(00000000-0000-0000-0000-000000000000)'
appType: 'webAppHyperVContainer'
WebAppName: 'myWindowsDockerSample'
DockerNamespace: 'mycontainerregistry'
DockerRepository: 'myrepository'