Упражнение. Обновление триггера конвейера
Коллега просит вас включить функцию Always On для службы приложений на веб-сайте компании, чтобы приложение веб-сайта было постоянно запущено.
В этом упражнении вы обновите созданный ранее конвейер для настройки автоматического выполнения при каждом изменении файла в главной ветви. Вы используете обновленный конвейер для развертывания изменения конфигурации на веб-сайте.
В процессе вы:
- Обновите конвейер таким образом, чтобы он автоматически выполнялся при изменении файлов в папке deploy и в главной ветви.
- Внесите изменения в файл Bicep.
- Убедитесь, что конвейер выполняется автоматически.
Обновите триггер, чтобы он учитывал ветви
Откройте в Visual Studio Code файл deploy/azure-pipelines.yml.
Удалите ручной триггер в первой строке.
Добавьте следующее определение триггера в первую строку:
trigger: batch: true branches: include: - main
Обратите внимание, что можно также включить управление параллелизмом, чтобы избежать одновременного выполнения нескольких экземпляров конвейера.
Сохраните внесенные в файл изменения.
Зафиксируйте изменения, но пока не отправляйте их. Вы сделаете это чуть позже.
git add . git commit -m 'Add branch trigger'
Обновление файла Bicep
В Visual Studio Code откройте файл main.bicep.
В свойстве
appServiceApp
определения ресурсаsiteConfig
добавьте свойствоalwaysOn
со значениемtrue
:resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { alwaysOn: true appSettings: [ { name: 'ToyManualsStorageAccountConnectionString' value: toyManualsStorageAccountConnectionString } ] } } }
Сохраните внесенные в файл изменения.
Зафиксируйте изменения и отправьте обе фиксации, выполнив следующий код в терминале Visual Studio Code:
git add . git commit -m 'Configure app Always On setting' git push
Проверка ошибок конвейера
В браузере выберите Конвейеры, а затем укажите свой конвейер.
Выберите последний запуск, чтобы убедиться, что конвейер был запущен автоматически. Конвейер запустился, потому что вы отправили изменения в ветвь, которая отслеживается триггером ветви. Если конвейер все еще работает, подождите минуту и обновите страницу.
Конвейер возвращает ошибку развертывания.
Чтобы диагностировать ошибку, выберите в разделе Задания нужное задание, а затем выберите задачу AzureResourceManagerTemplateDeployment, которая завершилась сбоем. Прокрутите экран, чтобы увидеть полное сообщение об ошибке. Сообщение об ошибке содержит следующий текст:
There was a conflict. AlwaysOn cannot be set for this site as the plan does not allow it. For more information on pricing and features, please see: https://aka.ms/appservicepricingdetails
Это означает, что развертывание завершилось сбоем, так как приложение службы приложений развернуто с использованием бесплатного уровня F1, который не поддерживает функцию Always On.
Внимание
Этот пример подтверждает, насколько важно тестировать файлы Bicep со всеми используемыми значениями параметров. В конфигурации ресурсов или другом коде могут возникать небольшие ошибки. Вы можете не обнаружить проблему, пока конвейер не развернет код и не завершится ошибкой. В следующем модуле вы узнаете о стратегиях проверки и тестирования кода Bicep.
Исправление файла Bicep и контроль за повторным выполнением конвейера
Вы говорите с коллегой о развертывании, которое завершилось ошибкой. Вы принимаете решение о том, что параметр Always On необходимо применять только в рабочей среде. Далее вы устраните проблему, которая вызвала сбой развертывания. Для этого вы примените новое правило, о котором договорились с коллегой.
В Visual Studio Code добавьте в переменную
environmentConfigurationMap
новые свойства для каждого типа среды:var environmentConfigurationMap = { nonprod: { appServiceApp: { alwaysOn: false } appServicePlan: { sku: { name: 'F1' capacity: 1 } } toyManualsStorageAccount: { sku: { name: 'Standard_LRS' } } } prod: { appServiceApp: { alwaysOn: true } appServicePlan: { sku: { name: 'S1' capacity: 2 } } toyManualsStorageAccount: { sku: { name: 'Standard_ZRS' } } } }
Измените параметр приложения
alwaysOn
, чтобы использовать соответствующее значение сопоставления конфигурации для типа среды:resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { alwaysOn: environmentConfigurationMap[environmentType].appServiceApp.alwaysOn appSettings: [ { name: 'ToyManualsStorageAccountConnectionString' value: toyManualsStorageAccountConnectionString } ] } } }
Сохраните внесенные в файл изменения.
В терминале Visual Studio Code зафиксируйте изменения и отправьте их:
git add . git commit -m 'Enable App Service Always On for production environments only' git push
Проверка успешного выполнения конвейера
В Azure DevOps вернитесь в список Конвейеры и выберите свой конвейер.
Выберите последний запуск. Если конвейер все еще работает, подождите минуту и обновите страницу.
Конвейер успешно выполняет развертывание. В этот раз все получилось, так как вы использовали допустимый файл Bicep.
Очистка ресурсов
Теперь, когда вы завершили упражнение, можно удалить ресурсы, чтобы не оплачивать их.
В окне терминала Visual Studio Code выполните следующую команду.
az group delete --resource-group ToyWebsite --yes --no-wait
Группа ресурсов удалится в фоновом режиме.
Remove-AzResourceGroup -Name ToyWebsite -Force