Упражнение. Добавление задания предварительного просмотра в рабочий процесс
Следует добавить дополнительное задание в рабочий процесс, чтобы можно было проверять, какие изменения будут внесены в среду Azure.
Во время процесса вы выполните следующие задачи:
- Обновите файл YAML определения рабочего процесса, чтобы добавить новое задание предварительной версии.
- Добавьте среду в репозиторий GitHub.
- Настройте среду таким образом, чтобы она требовала проверки.
- Обновите файл YAML рабочего процесса, чтобы использовать среду для задания развертывания.
- Просмотрите результаты операции "что если" и утвердите выполнение рабочего процесса.
Обновление определения рабочего процесса для добавления задания предварительного просмотра
Здесь вы добавляете в рабочий процесс новое задание, которое выполняет операцию "что если".
В Visual Studio Code откройте файл workflow.yml в папке .github/workflows.
Между заданиями проверки и развертывания добавьте следующее определение для задания предварительного просмотра:
preview: runs-on: ubuntu-latest needs: [lint, validate] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Run what-if with: failOnStdErr: false resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: deploy/main.bicep parameters: > environmentType=${{ env.ENVIRONMENT_TYPE }} additionalArguments: --what-if
Обратите внимание, что задание предварительной версии зависит от успешного завершения заданий lint и проверки .
Обновите задание развертывания, чтобы оно зависело от задания предварительного просмотра:
deploy: runs-on: ubuntu-latest needs: preview steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Deploy website with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
Сохраните внесенные в файл изменения.
Добавление среды
В браузере перейдите на страницу Параметры>Среды.
Выберите новую среду.
Введите имя среды Website.
Выберите Настройка среды.
На этапах установки этого модуля вы уже создали федеративные учетные данные для рабочего процесса, которые будут использоваться при развертывании в среде.
Добавление правила защиты с обязательным рецензентом в среду
Установите флажок Обязательные рецензенты.
Добавьте свое имя пользователя GitHub в список рецензентов.
Выберите Сохранить правила защиты.
Выберите среды для выхода из конфигурации.
Обновление определения рабочего процесса для требования среды и рецензента
Здесь вы настраиваете задание развертывания для запуска в среде Website, созданной ранее.
Откройте файл workflow.yml в Visual Studio Code.
Добавьте параметр
environment
в задание развертывания. Задайте для значения значениеWebsite
, чтобы совпадать с именем созданной среды:deploy: runs-on: ubuntu-latest environment: Website needs: preview steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Deploy website with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
Сохраните файл.
Проверка и фиксация определения рабочего процесса
Убедитесь, что файл workflow.yml выглядит следующим образом:
name: deploy-toy-website-test concurrency: toy-company on: push: branches: - main permissions: id-token: write contents: read env: AZURE_RESOURCEGROUP_NAME: ToyWebsiteTest ENVIRONMENT_TYPE: Test jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run Bicep linter run: az bicep build --file deploy/main.bicep validate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Run preflight validation with: deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }} deploymentMode: Validate preview: runs-on: ubuntu-latest needs: [lint, validate] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Run what-if with: failOnStdErr: false resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: deploy/main.bicep parameters: > environmentType=${{ env.ENVIRONMENT_TYPE }} additionalArguments: --what-if deploy: runs-on: ubuntu-latest environment: Website needs: preview steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Deploy website with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
Если файл выглядит иначе, обновите его в соответствии с этим примером, а затем сохраните его.
Зафиксируйте и отправьте изменения в репозиторий Git, выполнив следующие команды в терминале Visual Studio Code:
git add . git commit -m "Add preview job" git push
Запуск рабочего процесса и проверка выходных данных операции "что если"
В браузере перейдите к рабочему процессу.
Выберите последнее выполнение рабочего процесса.
Подождите, пока рабочий процесс завершит задания анализа кода, проверки и предварительного просмотра. Хотя GitHub автоматически обновляет страницу с учетом последнего состояния, рекомендуется периодически обновлять страницу.
Обратите внимание, что рабочий процесс запрашивает проверку. В зависимости от настройки учетной записи GitHub вы получите электронное письмо или веб-уведомление с запросом на просмотр рабочего процесса.
Прежде чем утверждать продолжение рабочего процесса, ознакомьтесь с результатами операции "что если", чтобы убедиться, что они соответствуют вашим ожиданиям.
Выберите задание предварительного просмотра.
Чтобы проверить изменения, полученные в результате команды "что, если", выберите действие Выполнить "что, если".
Обратите внимание, что журнал рабочего процесса содержит результаты "что если", аналогичные приведенным ниже:
Resource and property changes are indicated with these symbols: - Delete + Create ~ Modify = Nochange * Ignore The deployment will update the following scope: Scope: /subscriptions/***/resourceGroups/ToyWebsiteTest ~ Microsoft.OperationalInsights/workspaces/workspace-abcdefghijklm [2022-10-01] - properties.retentionInDays: 30 - properties.sku: name: "pergb2018" - properties.workspaceCapping: dailyQuotaGb: -1.0 ~ Microsoft.Web/sites/toy-website-abcdefghijklm [2022-03-01] + properties.siteConfig.localMySqlEnabled: false + properties.siteConfig.netFrameworkVersion: "v4.6" = Microsoft.Insights/components/toywebsite [2020-02-02] = Microsoft.Storage/storageAccounts/mystorageabcdefghijklm [2022-09-01] = Microsoft.Web/serverfarms/toy-website [2022-03-01] * microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsite Resource changes: 2 to modify, 3 no change, 1 to ignore.
Операция "что если" обнаружила изменение в рабочей области Log Analytics и ресурсах веб-сайта. Однако обнаруженные изменения являются шумом. Они не представляют реальные изменения в ресурсе. Команда Azure работает над сокращением шумов. В то же время можно игнорировать обнаруженные изменения.
Кроме того, в выходных данных команды "что, если" для типа ресурса
microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsite
может отображаться элемент. Это ресурс, который автоматически создается в Application Insights. Команда "что, если" обнаруживает, что ресурс не будет изменен.
Утверждение выполнения рабочего процесса
Выберите "Сводка", чтобы вернуться к обзору выполнения рабочего процесса.
Нажмите кнопку Проверить развертывания на панели "Проверка".
В раскрывающемся списке Проверка ожидающих развертываний выберите среду Website. В поле Оставьте комментарий введите Проверены результаты "что если".
Выберите Утвердить и развернуть.
Наблюдение за успешным развертыванием
После утверждения запуска рабочего процесса обратите внимание, что задание развертывания запускается.
Дождитесь остановки задания.
Обратите внимание, что выполнение рабочего процесса успешно завершено.