Упражнение. Добавление задания предварительного просмотра в рабочий процесс

Завершено

Следует добавить дополнительное задание в рабочий процесс, чтобы можно было проверять, какие изменения будут внесены в среду Azure.

Во время процесса вы выполните следующие задачи:

  • Обновите файл YAML определения рабочего процесса, чтобы добавить новое задание предварительной версии.
  • Добавьте среду в репозиторий GitHub.
  • Настройте среду таким образом, чтобы она требовала проверки.
  • Обновите файл YAML рабочего процесса, чтобы использовать среду для задания развертывания.
  • Просмотрите результаты операции "что если" и утвердите выполнение рабочего процесса.

Обновление определения рабочего процесса для добавления задания предварительного просмотра

Здесь вы добавляете в рабочий процесс новое задание, которое выполняет операцию "что если".

  1. В Visual Studio Code откройте файл workflow.yml в папке .github/workflows.

  2. Между заданиями проверки и развертывания добавьте следующее определение для задания предварительного просмотра:

    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 и проверки .

  3. Обновите задание развертывания, чтобы оно зависело от задания предварительного просмотра:

    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 }}
    
  4. Сохраните внесенные в файл изменения.

Добавление среды

  1. В браузере перейдите на страницу Параметры>Среды.

  2. Выберите новую среду.

    Снимок экрана: интерфейс GitHub со страницей

  3. Введите имя среды Website.

  4. Выберите Настройка среды.

    Снимок экрана: страница GitHub для новой среды с заполненными сведениями и выделенной кнопкой

На этапах установки этого модуля вы уже создали федеративные учетные данные для рабочего процесса, которые будут использоваться при развертывании в среде.

Добавление правила защиты с обязательным рецензентом в среду

  1. Установите флажок Обязательные рецензенты.

  2. Добавьте свое имя пользователя GitHub в список рецензентов.

    Снимок экрана: интерфейс GitHub со средой Website, выделенным флажком и текстовым полем для пункта

  3. Выберите Сохранить правила защиты.

  4. Выберите среды для выхода из конфигурации.

Обновление определения рабочего процесса для требования среды и рецензента

Здесь вы настраиваете задание развертывания для запуска в среде Website, созданной ранее.

  1. Откройте файл workflow.yml в Visual Studio Code.

  2. Добавьте параметр 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 }}
    
  3. Сохраните файл.

Проверка и фиксация определения рабочего процесса

  1. Убедитесь, что файл 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 }}
    

    Если файл выглядит иначе, обновите его в соответствии с этим примером, а затем сохраните его.

  2. Зафиксируйте и отправьте изменения в репозиторий Git, выполнив следующие команды в терминале Visual Studio Code:

    git add .
    git commit -m "Add preview job"
    git push
    

Запуск рабочего процесса и проверка выходных данных операции "что если"

  1. В браузере перейдите к рабочему процессу.

  2. Выберите последнее выполнение рабочего процесса.

    Подождите, пока рабочий процесс завершит задания анализа кода, проверки и предварительного просмотра. Хотя GitHub автоматически обновляет страницу с учетом последнего состояния, рекомендуется периодически обновлять страницу.

  3. Обратите внимание, что рабочий процесс запрашивает проверку. В зависимости от настройки учетной записи GitHub вы получите электронное письмо или веб-уведомление с запросом на просмотр рабочего процесса.

    Снимок экрана: интерфейс GitHub, который показывает выполнение рабочего процесса, с выделенным требованием проверки.

    Прежде чем утверждать продолжение рабочего процесса, ознакомьтесь с результатами операции "что если", чтобы убедиться, что они соответствуют вашим ожиданиям.

  4. Выберите задание предварительного просмотра.

  5. Чтобы проверить изменения, полученные в результате команды "что, если", выберите действие Выполнить "что, если".

  6. Обратите внимание, что журнал рабочего процесса содержит результаты "что если", аналогичные приведенным ниже:

    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. Команда "что, если" обнаруживает, что ресурс не будет изменен.

Утверждение выполнения рабочего процесса

  1. Выберите "Сводка", чтобы вернуться к обзору выполнения рабочего процесса.

    Снимок экрана: интерфейс GitHub, в котором отображается меню сводки с выделенной стрелкой

  2. Нажмите кнопку Проверить развертывания на панели "Проверка".

  3. В раскрывающемся списке Проверка ожидающих развертываний выберите среду Website. В поле Оставьте комментарий введите Проверены результаты "что если".

  4. Выберите Утвердить и развернуть.

    Снимок экрана: интерфейс GitHub со страницей утверждения рабочего процесса и выделенной кнопкой

Наблюдение за успешным развертыванием

  1. После утверждения запуска рабочего процесса обратите внимание, что задание развертывания запускается.

    Дождитесь остановки задания.

  2. Обратите внимание, что выполнение рабочего процесса успешно завершено.