Esercizio - Aggiungere un processo di anteprima al flusso di lavoro
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.
In Visual Studio Code aprire il file wokflow.yml nella cartella .github/workflows.
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.
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 }}
Salvare le modifiche apportate al file .
Aggiungere un ambiente
Nel browser passare a Impostazioni>Ambienti.
Selezionare Nuovo ambiente.
Immettere Sito Web come nome dell'ambiente.
Selezionare Configura ambiente.
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
Selezionare la casella Revisori obbligatori.
Aggiungere il proprio nome utente GitHub all'elenco dei revisori.
Selezionare Salva regole di protezione.
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.
In Visual Studio Code aprire il file workflow.yml.
Aggiungere il parametro
environment
al processo di distribuzione. Impostare il valore suWebsite
, 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 }}
Salvare il file.
Verificare ed eseguire il commit della definizione del flusso di lavoro
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.
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
Nel browser andare alle esecuzioni dei flussi di lavoro.
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.
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.
Prima di approvare la prosecuzione del flusso di lavoro, si esamineranno i risultati di simulazione per assicurarsi che corrispondano alle aspettative.
Selezionare il criterio Anteprima.
Selezionare il passaggio Esegui simulazione per controllare le modifiche su cui viene segnalato il comando di simulazione.
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
Selezionare il riepilogo per tornare alla panoramica per l'esecuzione del flusso di lavoro.
Selezionare il pulsante Rivedi distribuzioni nel pannello di revisione.
Nella finestra popup Rivedi distribuzioni in sospeso selezionare l'ambiente Sito Web. Nella casella Lascia un commento immettere Risultati di simulazione esaminati.
Selezionare Approva e distribuisci.
Osservare la distribuzione riuscita
Dopo aver approvato l'esecuzione del flusso di lavoro, si noti che il processo di distribuzione viene avviato.
Attendere il completamento del processo.
Si noti che l'esecuzione del flusso di lavoro viene completata correttamente.