Esercizio - Aggiungere un processo di anteprima al flusso di lavoro

Completato

Si desidera aggiungere un processo aggiuntivo al flusso di lavoro in modo da poter controllare quali modifiche verranno apportate all'ambiente di Azure.

Durante il processo, si eseguiranno le attività seguenti:

  • Aggiornare il file YAML di definizione del flusso di lavoro per aggiungere un nuovo processo di anteprima.
  • Aggiungere un ambiente al repository GitHub.
  • Configurare l'ambiente per richiedere una revisione.
  • Aggiornare il file YAML del flusso di lavoro per usare l'ambiente per il processo di distribuzione.
  • Visualizzare i risultati di simulazione e approvare un'esecuzione del flusso di lavoro.

Aggiornare la definizione del flusso di lavoro per aggiungere un processo di anteprima

Qui si aggiunge un nuovo processo al flusso di lavoro che esegue l'operazione di simulazione.

  1. In Visual Studio Code aprire il file wokflow.yml nella cartella .github/workflows.

  2. Tra i processi di convalida e distribuzione aggiungere la definizione seguente per il processo di anteprima :

    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
    

    Si noti che il processo di anteprima dipende dal completamento corretto dei processi di convalida e lint.

  3. Aggiornare il processo di distribuzione per renderlo dipendente dal processo di anteprima:

    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. Salvare le modifiche apportate al file .

Aggiungere un ambiente

  1. Nel browser passare a Impostazioni>Ambienti.

  2. Selezionare Nuovo ambiente.

    Screenshot dell'interfaccia di GitHub che mostra la pagina Environments, con il pulsante per la creazione di un ambiente evidenziato.

  3. Immettere Sito Web come nome dell'ambiente.

  4. Selezionare Configura ambiente.

    Screenshot della pagina di GitHub relativa a un nuovo ambiente, con i dettagli completati e il pulsante Configure environment evidenziato.

Nei passaggi di configurazione per questo modulo sono già state create credenziali federate da usare per il flusso di lavoro quando viene distribuito nell'ambiente.

Aggiungere la regola di protezione dei revisori necessaria all'ambiente

  1. Selezionare la casella Revisori obbligatori.

  2. Aggiungere il proprio nome utente GitHub all'elenco dei revisori.

    Screenshot dell'interfaccia di GitHub che mostra l'ambiente del sito Web, con la casella di controllo dei revisori obbligatori e la casella di testo evidenziate.

  3. Selezionare Salva regole di protezione.

  4. Selezionare Ambienti per uscire dalla configurazione.

Aggiornare la definizione del flusso di lavoro per richiedere un ambiente e un revisore

Qui si configura il processo di distribuzione per l'esecuzione nell'ambiente Sito Web creato in precedenza.

  1. In Visual Studio Code aprire il file workflow.yml.

  2. Aggiungere il parametro environment al processo di distribuzione. Impostare il valore su Website, in modo che corrisponda al nome dell'ambiente creato:

    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. Salvare il file.

Verificare ed eseguire il commit della definizione del flusso di lavoro

  1. Verificare che il file workflow.yml sia simile al codice seguente:

    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 il file ha un aspetto diverso, aggiornarlo in modo che corrisponda a questo esempio e quindi salvarlo.

  2. Eseguire il commit e il push delle modifiche nel repository Git eseguendo i comandi seguenti nel terminale di Visual Studio Code:

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

Eseguire il flusso di lavoro ed esaminare gli output di simulazione

  1. Nel browser andare alle esecuzioni dei flussi di lavoro.

  2. Selezionare l'esecuzione più recente del flusso di lavoro.

    Attendere il completamento del flusso di lavoro delle fasi lint, validate e preview. Anche se GitHub aggiorna automaticamente la pagina allo stato più recente, è consigliabile aggiornare la pagina di tanto in tanto.

  3. Si noti che il flusso di lavoro richiede una revisione. A seconda di come è stato configurato l'account GitHub, si riceverà una notifica Web o tramite posta elettronica con una richiesta di revisione del flusso di lavoro.

    Screenshot dell'interfaccia di GitHub che mostra l'esecuzione del flusso di lavoro, con il requisito di revisione evidenziato.

    Prima di approvare la prosecuzione del flusso di lavoro, si esamineranno i risultati di simulazione per assicurarsi che corrispondano alle aspettative.

  4. Selezionare il criterio Anteprima.

  5. Selezionare il passaggio Esegui simulazione per controllare le modifiche su cui viene segnalato il comando di simulazione.

  6. Si noti che il log del flusso di lavoro presenta risultati di simulazione simili al codice seguente:

    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.
    

    L'operazione di simulazione ha rilevato una modifica all'area di lavoro Log Analytics e alle risorse del sito Web. Tuttavia, le modifiche rilevate non sono significative. Non rappresentano modifiche reali alla risorsa. Nel tempo, il team di Azure lavora per ridurre tali modifiche non significative. Nel frattempo, è possibile ignorare le modifiche rilevate.

    È anche possibile visualizzare un elemento nell'output di simulazione per il tipo di risorsa microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsite. Si tratta di una risorsa creata automaticamente da Application Insights. Il comando di simulazione rileva che non verrà apportata alcuna modifica alla risorsa.

Approvare l'esecuzione del flusso di lavoro

  1. Selezionare il riepilogo per tornare alla panoramica per l'esecuzione del flusso di lavoro.

    Screenshot dell'interfaccia di GitHub che mostra il menu Summary, con il pulsante Back evidenziato.

  2. Selezionare il pulsante Rivedi distribuzioni nel pannello di revisione.

  3. Nella finestra popup Rivedi distribuzioni in sospeso selezionare l'ambiente Sito Web. Nella casella Lascia un commento immettere Risultati di simulazione esaminati.

  4. Selezionare Approva e distribuisci.

    Screenshot dell'interfaccia di GitHub che mostra la pagina di approvazione del flusso di lavoro, con il pulsante Approve evidenziato.

Osservare la distribuzione riuscita

  1. Dopo aver approvato l'esecuzione del flusso di lavoro, si noti che il processo di distribuzione viene avviato.

    Attendere il completamento del processo.

  2. Si noti che l'esecuzione del flusso di lavoro viene completata correttamente.