Exercício ─ Adicione um trabalho de visualização ao fluxo de trabalho

Concluído

Você deseja adicionar um trabalho extra ao fluxo de trabalho para verificar quais alterações serão feitas no ambiente do Azure.

Durante o processo, você executará as seguintes tarefas:

  • Atualize o arquivo YAML de definição do fluxo de trabalho para adicionar um novo trabalho de visualização.
  • Adicione um ambiente ao repositório GitHub.
  • Configure o ambiente para exigir uma revisão.
  • Atualize o arquivo YAML do fluxo de trabalho para usar o ambiente no trabalho de implantação.
  • Veja os resultados do teste de hipóteses e aprove uma execução de fluxo de trabalho.

Atualize a definição do fluxo de trabalho para adicionar um trabalho de visualização

Aqui, você adiciona um novo trabalho ao fluxo de trabalho que executa a operação de teste de hipóteses.

  1. No Visual Studio Code, abra o arquivo workflow.yml na pasta .github/workflows.

  2. Entre os trabalhos Validar e Implantar, adicione a seguinte definição para o trabalho Visualizar:

    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
    

    Observe que o trabalho de visualização depende da conclusão bem-sucedida dos trabalhos lint e validar.

  3. Atualize o trabalho Implantar para torná-lo dependente do trabalho Visualizar:

    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. Salve as alterações no arquivo.

Adicionar um ambiente

  1. No navegador, acesse Configurações>Ambientes.

  2. Selecione Novo ambiente.

    Captura de tela da interface do GitHub que mostra a página Ambientes, com o botão para criar um ambiente realçado.

  3. Insira Site como o nome do ambiente.

  4. Selecione Configurar ambiente.

    Captura de tela da página GitHub para um novo ambiente, com os detalhes preenchidos e o botão Configurar ambiente realçado.

Nas etapas de instalação deste módulo, você já criou uma credencial federada para o fluxo de trabalho a ser usado quando ele é implantado no ambiente.

Adicionar a regra de proteção de revisor necessário ao ambiente

  1. Selecione a caixa Revisores necessários.

  2. Adicione seu nome de usuário do GitHub à lista de revisores.

    Captura de tela da interface do GitHub que mostra o ambiente Site, com a caixa de seleção de revisores necessários e a caixa de texto realçadas.

  3. Selecione Salvar regras de proteção.

  4. Selecione Ambientes para sair da configuração.

Atualize a definição do fluxo de trabalho para exigir um ambiente e um revisor

Aqui, você configura o trabalho Implantar para que ele seja executado no ambiente Site criado anteriormente.

  1. Abra o arquivo workflow.yml no Visual Studio Code.

  2. Adicione o parâmetro environment ao trabalho Implantar. Defina o valor como Website para corresponder ao nome do ambiente que você criou:

    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. Salve o arquivo.

Verificar e fazer commit a definição do fluxo de trabalho

  1. Verifique se o arquivo workflow.yml é semelhante ao seguinte código:

    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 }}
    

    Se o seu arquivo tiver uma aparência diferente, atualize-o para que corresponda a este exemplo e, em seguida, salve-o.

  2. Faça commit e efetue push das alterações no repositório Git executando os seguintes comandos no terminal do Visual Studio Code:

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

Executar o fluxo de trabalho e examinar os resultados do teste de hipóteses

  1. No navegador, acesse as execuções de fluxo de trabalho.

  2. Selecione a execução mais recente do fluxo de trabalho.

    Aguarde até que o fluxo de trabalho conclua os trabalhos Lint, Validar e Visualizar. Embora o GitHub atualize automaticamente a página com o status mais recente, é uma boa ideia atualizá-la ocasionalmente.

  3. Observe que o fluxo de trabalho solicita uma revisão. Dependendo de como você configurou sua conta do GitHub, você receberá uma notificação por email ou pela Web com uma solicitação para revisar o fluxo de trabalho.

    Captura de tela da interface do GitHub que mostra a execução do fluxo de trabalho, com o requisito de revisão realçado.

    Antes de aprovar a continuação do fluxo de trabalho, você analisará os resultados do teste de hipóteses para garantir que eles correspondam às expectativas.

  4. Selecione o trabalho Visualizar.

  5. Escolha a etapa Executar teste de hipóteses para inspecionar as alterações relatadas pelo comando de teste de hipóteses.

  6. Observe que o log do fluxo de trabalho fornece resultados do teste de hipóteses semelhantes ao seguinte código:

    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.
    

    A operação Teste de hipóteses detectou uma alteração no espaço de trabalho de análise de registros e nos recursos do site. No entanto, as alterações detectadas são ruídos. Elas não representam as alterações reais no recurso. Com o tempo, a equipe do Azure trabalhará para reduzir o ruído. Enquanto isso, você pode ignorar as alterações detectadas.

    Você também poderá ver um item na saída do teste de hipóteses do tipo de recurso microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsite. Este é um recurso que o Application Insights cria automaticamente. O comando de teste de hipóteses detecta que nenhuma alteração será feita no recurso.

Aprovar a execução do fluxo de trabalho

  1. Selecione o Resumo para retornar à visão geral da execução do fluxo de trabalho.

    Captura de tela da interface do GitHub que mostra o menu Resumo, com a seta para trás realçada.

  2. Selecione o botão Analisar implantações no painel de análise.

  3. No pop-up Analisar implantações pendentes, selecione o ambiente Site. Na caixa Deixar um comentário, insira Resultados do teste de hipóteses examinados.

  4. Selecione Aprovar e implantar.

    Captura de tela da interface do GitHub que mostra a página de aprovação do fluxo de trabalho, com o botão Aprovar realçado.

Observar a implantação bem-sucedida

  1. Depois que você aprovar a execução do fluxo de trabalho, observe que o trabalho implantar começa a ser executado.

    Aguarde a conclusão do trabalho.

  2. Observe que a execução do fluxo de trabalho foi concluída com sucesso.