Упражнение. Добавление этапа предварительного просмотра в конвейер
Следует добавить дополнительный этап в конвейер, чтобы можно было проверять, какие изменения будут внесены в среду Azure.
В процессе вы:
- Обновите файл конвейера YAML, чтобы добавить новый этап предварительного просмотра.
- Добавьте среду в Azure Pipelines.
- Настройте среду таким образом, чтобы она требовала утверждение.
- Обновите файл конвейера YAML, чтобы использовать среду для этапа развертывания.
- Просмотрите результаты операции "что, если" и утвердите выполнение конвейера.
Обновление определения конвейера для добавления этапа предварительного просмотра
Здесь вы добавите новый этап в конвейер, который запускает операцию what-if.
В Visual Studio Code откройте файл azure-pipelines.yml в папке deploy.
Между этапами проверки и развертывания добавьте следующее определение для этапа предварительного просмотра.
- stage: Preview jobs: - job: PreviewAzureChanges displayName: Preview Azure changes steps: - task: AzureCLI@2 name: RunWhatIf displayName: Run what-if inputs: azureSubscription: $(ServiceConnectionName) scriptType: 'bash' scriptLocation: 'inlineScript' inlineScript: | az deployment group what-if \ --resource-group $(ResourceGroupName) \ --template-file deploy/main.bicep \ --parameters environmentType=$(EnvironmentType)
Сохраните внесенные в файл изменения.
Добавление среды
В браузере перейдите на страницу Pipelines>Среды.
Нажмите Создать среду.
Введите имя среды Website.
Оставьте описание пустым. В поле Ресурс выберите Нет.
Примечание.
В Azure Pipelines среды используются для включения функций развертывания. Некоторые из этих функций применяются только при развертывании в Kubernetes или на виртуальных машинах. В этом модуле эти функции не используются, и их можно игнорировать.
Нажмите кнопку создания.
Добавление утверждения в среду
Выберите вкладку "Утверждения и проверки " в левом верхнем углу экрана.
Выберите утверждения.
В текстовом поле Утверждающие введите свое имя и выберите себя.
Нажмите кнопку со стрелкой рядом с пунктом Дополнительно.
Обратите внимание, что по умолчанию утверждающие могут утверждать запуски, которые они сами активировали. Так как вы единственный пользователь, который будет работать с этим конвейером, оставьте этот флажок установленным.
Нажмите кнопку создания.
Обновление определения конвейера, чтобы требовать среду и утверждение
Здесь вы настроите этап развертывания для запуска в среде веб-сайта, созданной ранее. Этап развертывания преобразуется для запуска задания развертывания вместо стандартного задания и его настройки для развертывания в среде.
В файле azure-pipelines.yml в Visual Studio Code замените определение этапа развертывания на следующий код.
- stage: Deploy jobs: - deployment: DeployWebsite displayName: Deploy website environment: Website strategy: runOnce: deploy: steps: - checkout: self - task: AzureResourceManagerTemplateDeployment@3 name: DeployBicepFile displayName: Deploy Bicep file inputs: connectedServiceName: $(ServiceConnectionName) deploymentName: $(Build.BuildNumber) location: $(deploymentDefaultLocation) resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType)
Обратите внимание, что вы определили новый
checkout
шаг. В отличие от обычных заданий, задания развертывания должны быть настроены для извлечения (загрузки) файлов из репозитория Git. Если этот шаг не выполняется, задание развертывания не сможет прочитать файл Bicep. Вместо этого можно использовать артефакты конвейера для отправки файлов между этапами конвейера. Ссылки на дополнительные сведения об артефактах см. в сводке.Сохраните файл.
Проверка и фиксация определения конвейера
Убедитесь, что файл azure-pipelines.yml соответствует следующему коду:
trigger: batch: true branches: include: - main pool: vmImage: ubuntu-latest variables: - name: deploymentDefaultLocation value: westus3 stages: - stage: Lint jobs: - job: LintCode displayName: Lint code steps: - script: | az bicep build --file deploy/main.bicep name: LintBicepCode displayName: Run Bicep linter - stage: Validate jobs: - job: ValidateBicepCode displayName: Validate Bicep code steps: - task: AzureResourceManagerTemplateDeployment@3 name: RunPreflightValidation displayName: Run preflight validation inputs: connectedServiceName: $(ServiceConnectionName) location: $(deploymentDefaultLocation) deploymentMode: Validation resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType) - stage: Preview jobs: - job: PreviewAzureChanges displayName: Preview Azure changes steps: - task: AzureCLI@2 name: RunWhatIf displayName: Run what-if inputs: azureSubscription: $(ServiceConnectionName) scriptType: 'bash' scriptLocation: 'inlineScript' inlineScript: | az deployment group what-if \ --resource-group $(ResourceGroupName) \ --template-file deploy/main.bicep \ --parameters environmentType=$(EnvironmentType) - stage: Deploy jobs: - deployment: DeployWebsite displayName: Deploy website environment: Website strategy: runOnce: deploy: steps: - checkout: self - task: AzureResourceManagerTemplateDeployment@3 name: DeployBicepFile displayName: Deploy Bicep file inputs: connectedServiceName: $(ServiceConnectionName) deploymentName: $(Build.BuildNumber) location: $(deploymentDefaultLocation) resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType)
Если нет, обновите его в соответствии с этим примером, а затем сохраните.
Зафиксируйте и отправьте изменения в репозиторий Git, выполнив следующие команды в терминале Visual Studio Code:
git add . git commit -m "Add preview stage" git push
Запуск конвейера и проверка выходных данных "что, если"
В браузере перейдите к конвейеру.
Выберите последнее выполнение конвейера.
Подождите, пока конвейер завершит этапы анализа кода, проверки и предварительного просмотра. Хотя Azure Pipelines автоматически обновляет страницу с учетом последнего состояния, рекомендуется периодически обновлять страницу.
Если вам будет предложено предоставить разрешение на доступ к ресурсу, выберите Просмотр и щелкните Разрешить.
Обратите внимание, что Azure Pipelines запрашивает утверждение. Вы также получите сообщение электронной почты о том, что конвейер требует утверждения.
Прежде чем утверждать продолжение конвейера, ознакомьтесь с результатами операции "что, если", чтобы убедиться, что они соответствуют вашим ожиданиям.
Выберите этап предварительного просмотра.
Чтобы проверить изменения, полученные в результате команды "что, если", выберите действие Выполнить "что, если".
Обратите внимание, что журнал конвейера содержит результаты "что, если", аналогичные приведенному ниже коду.
Resource and property changes are indicated with these symbols: + Create ~ Modify = Nochange The deployment will update the following scope: Scope: /subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/ToyWebsiteTest ~ Microsoft.Web/sites/toy-website-nbfnedv766snk [2021-01-15] + properties.siteConfig.localMySqlEnabled: false + properties.siteConfig.netFrameworkVersion: "v4.6" = Microsoft.Insights/components/toywebsite [2020-02-02] = Microsoft.Storage/storageAccounts/mystoragenbfnedv766snk [2021-04-01] = Microsoft.Web/serverfarms/toy-website [2021-01-15] Resource changes: 1 to modify, 3 no change.
Операция "что, если" обнаружила изменение ресурса веб-сайта. Однако обнаруженные им изменения являются шумом. Они не представляют реальные изменения в ресурсе. Команда Azure работает над сокращением шумов. А пока для этих двух конкретных свойств обнаруженные изменения можно игнорировать.
Кроме того, в выходных данных команды "что, если" для типа ресурса
microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsite
может отображаться элемент. Application Insights автоматически создает этот ресурс. Команда "что, если" обнаруживает, что ресурс не будет изменен.
Утверждение выполнения конвейера
Щелкните стрелку влево, чтобы вернуться к сведениям о выполнении конвейера.
Нажмите кнопку Обзор на панели утверждения.
В поле Комментарий введите Проверены результаты "что, если".
Выберите Утвердить.
Наблюдение за успешным развертыванием
После утверждения конвейера этап развертывания начинает выполняться.
Дождитесь завершения этапа.
Обратите внимание, что выполнение конвейера завершается успешно.