Упражнение. Добавление задачи развертывания Bicep в конвейер
Вы создали базовый конвейер и настроили среды Azure и Azure Pipelines для связи между собой. Теперь вы готовы к развертыванию файла Bicep для веб-сайта в Azure из конвейера.
В этом упражнении вы выполните следующие действия.
- Добавьте файл Bicep в репозиторий.
- Добавьте шаг конвейера для развертывания файла Bicep.
- Снова запустите конвейер и убедитесь, что он успешно развернул веб-сайт.
Добавление файла Bicep веб-сайта в репозиторий Git
Вы уже подготовили файл Bicep для веб-сайта, который можно использовать для развертывания различных конфигураций ресурсов веб-сайта в зависимости от среды и конфигурации. Далее нужно добавить файл Bicep в репозиторий.
Откройте Visual Studio Code Explorer.
В папке deploy создайте новый файл с именем main.bicep. Убедитесь, что файл создан в папке deploy, а не в корне репозитория:
Скопируйте следующий код в файл main.bicep:
@description('The Azure region into which the resources should be deployed.') param location string = resourceGroup().location @description('The type of environment. This must be nonprod or prod.') @allowed([ 'nonprod' 'prod' ]) param environmentType string @description('Indicates whether to deploy the storage account for toy manuals.') param deployToyManualsStorageAccount bool @description('A unique suffix to add to resource names that need to be globally unique.') @maxLength(13) param resourceNameSuffix string = uniqueString(resourceGroup().id) var appServiceAppName = 'toy-website-${resourceNameSuffix}' var appServicePlanName = 'toy-website-plan' var toyManualsStorageAccountName = 'toyweb${resourceNameSuffix}' // Define the SKUs for each component based on the environment type. var environmentConfigurationMap = { nonprod: { appServicePlan: { sku: { name: 'F1' capacity: 1 } } toyManualsStorageAccount: { sku: { name: 'Standard_LRS' } } } prod: { appServicePlan: { sku: { name: 'S1' capacity: 2 } } toyManualsStorageAccount: { sku: { name: 'Standard_ZRS' } } } } var toyManualsStorageAccountConnectionString = deployToyManualsStorageAccount ? 'DefaultEndpointsProtocol=https;AccountName=${toyManualsStorageAccount.name};EndpointSuffix=${environment().suffixes.storage};AccountKey=${toyManualsStorageAccount.listKeys().keys[0].value}' : '' resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = { name: appServicePlanName location: location sku: environmentConfigurationMap[environmentType].appServicePlan.sku } resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { appSettings: [ { name: 'ToyManualsStorageAccountConnectionString' value: toyManualsStorageAccountConnectionString } ] } } } resource toyManualsStorageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = if (deployToyManualsStorageAccount) { name: toyManualsStorageAccountName location: location kind: 'StorageV2' sku: environmentConfigurationMap[environmentType].toyManualsStorageAccount.sku }
Сохраните внесенные в файл изменения.
В терминале Visual Studio Code выполните приведенный ниже код, чтобы подготовить изменения, зафиксировать их и отправить в репозиторий:
git add deploy/main.bicep git commit -m 'Add Bicep file' git push
Замена шагов конвейера
Далее необходимо обновить определение конвейера, чтобы развернуть файл Bicep в Azure с помощью служебного подключения.
Откройте в Visual Studio Code файл deploy/azure-pipelines.yml.
jobs:
Перед строкой добавьтеvariables:
для определения переменной с именемdeploymentDefaultLocation
:trigger: none pool: vmImage: ubuntu-latest variables: - name: deploymentDefaultLocation value: westus3 jobs:
Уберите шаг
script
из определения конвейера, удалив две нижние строки файла.Совет
При работе в Visual Studio Code и установке расширения Azure Pipelines попробуйте использовать сочетание клавиш Ctrl + пробел. В нем отображается контекстное меню с предлагаемыми элементами для добавления в текущую позицию курсора.
В нижней части файла добавьте задачу, которая использует задачу
AzureResourceManagerTemplateDeployment
для развертывания файла Bicep:jobs: - job: steps: - task: AzureResourceManagerTemplateDeployment@3 inputs: connectedServiceName: $(ServiceConnectionName) deploymentName: $(Build.BuildNumber) location: $(deploymentDefaultLocation) resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType) -deployToyManualsStorageAccount $(DeployToyManualsStorageAccount)
Примечание.
В этом модуле рекомендуется задать ее вручную, а не методом копирования и вставки. Обратите особое внимание на отступы в файле. Если отступы указаны неправильно, использование файла YAML будет невозможно. В Visual Studio Code ошибки отмечены волнистыми линиями.
На этом шаге для присвоения имени развертыванию используется системная переменная
$(Build.BuildNumber)
. Переменная помогает легко увидеть, какому выполнению конвейера соответствует развертывание.Свойство задачи
location
является обязательным для задачиAzureResourceManagerTemplateDeployment
. Оно указывает регион Azure, в котором должна быть создана группа ресурсов. В этом упражнении вы уже создали группу ресурсов, поэтому этот выбор расположения ни на что не повлияет. Но это значение в любом случае является обязательным. Здесь вы присвоите ему значение переменнойdeploymentDefaultLocation
, которую вы задали на предыдущем шаге.Сохраните внесенные в файл изменения. Файл должен выглядеть так, как показано в этом примере.
trigger: none pool: vmImage: ubuntu-latest variables: - name: deploymentDefaultLocation value: westus3 jobs: - job: steps: - task: AzureResourceManagerTemplateDeployment@3 inputs: connectedServiceName: $(ServiceConnectionName) deploymentName: $(Build.BuildNumber) location: $(deploymentDefaultLocation) resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType) -deployToyManualsStorageAccount $(DeployToyManualsStorageAccount)
В терминале Visual Studio Code внесите изменения, зафиксируйте их в репозитории и отправьте в Azure Repos:
git add deploy/azure-pipelines.yml git commit -m 'Add deployment task to pipeline' git push
Добавление переменных конвейера
В браузере выберите Конвейеры.
Выберите конвейер.
Выберите Изменить.
Выберите Переменные.
Выберите новую переменную.
В окне Имя введите ServiceConnectionName. В списке Значение введите ToyWebsite.
Не устанавливая флажки, нажмите кнопку ОК.
Чтобы создать дополнительные переменные, выберите +.
Создайте следующие переменные так же, как вы создали переменную ServiceConnectionName:
Имя переменной Значение ResourceGroupName ToyWebsite EnvironmentType nonprod Выполните действия, чтобы создать переменную с именем DeployToyManualsStorageAccount со значением true. Для этой переменной установите флажок Разрешить пользователям переопределять это значение при выполнении этого конвейера.
После создания всех четырех переменных нажмите кнопку Сохранить.
Выполнение конвейера
Теперь вы готовы к запуску конвейера!
Шаблон включает учетную запись хранения, где команда веб-сайта хранит руководства по использованию игрушек. Так как вы пока только тестируете среду, вам не нужно развертывать учетную запись хранения при каждом развертывании веб-сайта. Поэтому вы создали параметр Bicep для управления развертыванием учетной записи хранения. Далее необходимо выполнить конвейер и переопределить развертывание, чтобы не развертывать в этот раз учетную запись хранения.
Выберите Выполнить.
Появится панель Запуск конвейера. Эту панель можно использовать для настройки параметров конкретного выполнения конвейера.
Выберите Переменные.
Выберите переменную DeployToyManualsStorageAccount и измените ее значение на false. После этого нажмите кнопку Обновить.
Выберите стрелку назад.
Выберите Выполнить, чтобы запустить выполнение конвейера. Запуск конвейера может занять несколько минут. После запуска конвейера развертывание может занять несколько минут.
Чтобы открыть задание, в разделе "Задания " выберите задание. Вы можете отслеживать процесс выполнения задания или дождаться его завершения и просмотреть журнал.
Дождитесь остановки задания.
Выберите Должность.
Выберите 1 используемая переменная времени очереди.
Отображается переопределенное значение для этого запуска конвейера. Переменная
DeployToyManualsStorageAccount
имеет значение false, так как вы переопределили ее исходную величину.Проверьте остальные выходные данные конвейера.
Конвейер успешно выполняет развертывание.
Проверка развертывания
Переход на портал Azure.
В меню слева выберите Группа ресурсов.
Выберите ToyWebsite.
В разделе Обзор можно отслеживать состояние развертывания. Здесь можно увидеть, что успешно выполнено одно развертывание.
Щелкните ссылку 1 Succeeded (1 успешное), чтобы просмотреть сведения об этом развертывании.
Имя развертывания совпадает с именем выполнения конвейера.
Чтобы увидеть, какие ресурсы были развернуты, выберите нужное развертывание. Чтобы просмотреть дополнительную информацию, выберите Сведения о развертывании. В этом случае отобразятся план Службы приложений Azure и приложение.