Упражнение. Добавление этапа предварительного просмотра в конвейер

Завершено

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

В процессе вы:

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

Обновление определения конвейера для добавления этапа предварительного просмотра

Здесь вы добавите новый этап в конвейер, который запускает операцию what-if.

  1. В Visual Studio Code откройте файл azure-pipelines.yml в папке deploy.

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

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

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

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

    Снимок экрана: интерфейс Azure DevOps с выделенным элементом

  2. Нажмите Создать среду.

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

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

    Оставьте описание пустым. В поле Ресурс выберите Нет.

    Примечание.

    В Azure Pipelines среды используются для включения функций развертывания. Некоторые из этих функций применяются только при развертывании в Kubernetes или на виртуальных машинах. В этом модуле эти функции не используются, и их можно игнорировать.

  4. Нажмите кнопку создания.

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

Добавление утверждения в среду

  1. Выберите вкладку "Утверждения и проверки " в левом верхнем углу экрана.

    Снимок экрана: интерфейс Azure DevOps, показывающий среду веб-сайта с выделенным вкладкой

  2. Выберите утверждения.

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

  3. В текстовом поле Утверждающие введите свое имя и выберите себя.

  4. Нажмите кнопку со стрелкой рядом с пунктом Дополнительно.

    Обратите внимание, что по умолчанию утверждающие могут утверждать запуски, которые они сами активировали. Так как вы единственный пользователь, который будет работать с этим конвейером, оставьте этот флажок установленным.

  5. Нажмите кнопку создания.

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

Обновление определения конвейера, чтобы требовать среду и утверждение

Здесь вы настроите этап развертывания для запуска в среде веб-сайта, созданной ранее. Этап развертывания преобразуется для запуска задания развертывания вместо стандартного задания и его настройки для развертывания в среде.

  1. В файле 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. Вместо этого можно использовать артефакты конвейера для отправки файлов между этапами конвейера. Ссылки на дополнительные сведения об артефактах см. в сводке.

  2. Сохраните файл.

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

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

    Если нет, обновите его в соответствии с этим примером, а затем сохраните.

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

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

Запуск конвейера и проверка выходных данных "что, если"

  1. В браузере перейдите к конвейеру.

  2. Выберите последнее выполнение конвейера.

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

  3. Если вам будет предложено предоставить разрешение на доступ к ресурсу, выберите Просмотр и щелкните Разрешить.

  4. Обратите внимание, что Azure Pipelines запрашивает утверждение. Вы также получите сообщение электронной почты о том, что конвейер требует утверждения.

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

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

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

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

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

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

Утверждение выполнения конвейера

  1. Щелкните стрелку влево, чтобы вернуться к сведениям о выполнении конвейера.

    Снимок экрана: интерфейс Azure DevOps с выделенной стрелкой назад и меню

  2. Нажмите кнопку Обзор на панели утверждения.

  3. В поле Комментарий введите Проверены результаты "что, если".

  4. Выберите Утвердить.

    Снимок экрана: интерфейс Azure DevOps с выделенной кнопкой

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

  1. После утверждения конвейера этап развертывания начинает выполняться.

    Дождитесь завершения этапа.

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