Esercizio - Aggiornare il trigger della pipeline
Un collega chiede di attivare la funzionalità Always On di Servizio app nel sito Web aziendale, in modo che l'app del sito Web sia sempre in esecuzione.
In questo esercizio si aggiornerà la pipeline creata per l'esecuzione automatica ogni volta che un file cambia nel ramo main. Si userà la pipeline aggiornata per distribuire nel sito Web la modifica della configurazione richiesta.
Durante il processo, si eseguiranno queste operazioni:
- Aggiornare la pipeline in modo che venga attivata automaticamente ogni volta che un file cambia nella cartella deploy nel ramo main.
- Apportare una modifica al file Bicep.
- Verificare che la pipeline venga eseguita automaticamente.
Aggiornare il trigger in modo che sia basato sul ramo
In Visual Studio Code aprire il file deploy/azure-pipelines.yml.
Rimuovere il trigger manuale nella prima riga.
Aggiungere nella prima riga la definizione di trigger seguente:
trigger: batch: true branches: include: - main
Si noti che è anche possibile abilitare il controllo della concorrenza per evitare che la pipeline sia in esecuzione più volte contemporaneamente.
Salvare le modifiche apportate al file .
Eseguire il commit delle modifiche, ma non eseguirne ancora il push. Il push delle modifiche verrà eseguito tra breve.
git add . git commit -m 'Add branch trigger'
Aggiornare il file Bicep
In Visual Studio Code aprire il file main.bicep.
Nella proprietà
siteConfig
della definizione della risorsaappServiceApp
aggiungere la proprietàalwaysOn
con il valoretrue
:resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { alwaysOn: true appSettings: [ { name: 'ToyManualsStorageAccountConnectionString' value: toyManualsStorageAccountConnectionString } ] } } }
Salvare le modifiche apportate al file.
Nel terminale di Visual Studio Code eseguire il codice seguente per eseguire il commit delle modifiche e il push di entrambi i commit:
git add . git commit -m 'Configure app Always On setting' git push
Verificare l'esito negativo della pipeline
Nel browser selezionare Pipeline e quindi selezionare la pipeline.
Selezionare l'esecuzione più recente per verificare che la pipeline sia stata eseguita automaticamente. La pipeline è stata eseguita a causa del push delle modifiche in un ramo monitorato dal trigger del ramo. Se la pipeline è ancora in esecuzione, attendere un minuto e quindi aggiornare la pagina.
La pipeline indica che la distribuzione non è riuscita.
Per diagnosticare l'errore, in Processi selezionare il processo e quindi selezionare l'attività AzureResourceManagerTemplateDeployment non riuscita. Scorrere per visualizzare il messaggio di errore completo. Il messaggio di errore include il testo seguente:
There was a conflict. AlwaysOn cannot be set for this site as the plan does not allow it. For more information on pricing and features, please see: https://aka.ms/appservicepricingdetails
Questo messaggio di errore indica che la distribuzione non è riuscita perché l'app del servizio app è stata distribuita usando il livello gratuito F1 che non supporta la funzionalità Always On.
Importante
Questo esempio è una dimostrazione di quanto sia importante testare i file Bicep, inclusi tutti i valori dei parametri usati. È facile aggiungere piccoli errori nella configurazione delle risorse o in altro codice. È possibile che un problema non venga individuato finché la pipeline non distribuisce il codice senza riuscirvi. In un modulo futuro verranno presentate alcune strategie che è possibile usare per verificare e testare il codice Bicep.
Correggere il file Bicep e notare che la pipeline viene attivata di nuovo
Si parla al collega della distribuzione non riuscita. Insieme si decide che l'impostazione Always On deve essere applicata solo per l'ambiente di produzione. Di seguito si vedrà come risolvere il problema che ha causato l'errore di distribuzione applicando la nuova regola che si è deciso di usare.
In Visual Studio Code aggiungere nuove proprietà per ogni tipo di ambiente alla variabile
environmentConfigurationMap
:var environmentConfigurationMap = { nonprod: { appServiceApp: { alwaysOn: false } appServicePlan: { sku: { name: 'F1' capacity: 1 } } toyManualsStorageAccount: { sku: { name: 'Standard_LRS' } } } prod: { appServiceApp: { alwaysOn: true } appServicePlan: { sku: { name: 'S1' capacity: 2 } } toyManualsStorageAccount: { sku: { name: 'Standard_ZRS' } } } }
Modificare l'impostazione
alwaysOn
dell'applicazione in modo da usare il valore della mappa di configurazione appropriato per il tipo di ambiente:resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { alwaysOn: environmentConfigurationMap[environmentType].appServiceApp.alwaysOn appSettings: [ { name: 'ToyManualsStorageAccountConnectionString' value: toyManualsStorageAccountConnectionString } ] } } }
Salvare le modifiche apportate al file.
Nel terminale di Visual Studio Code eseguire il commit e il push delle modifiche:
git add . git commit -m 'Enable App Service Always On for production environments only' git push
Verificare l'esito positivo della pipeline
In Azure DevOps tornare all'elenco Pipeline e selezionare la pipeline.
Selezionare l'esecuzione più recente. Se la pipeline è ancora in esecuzione, attendere un minuto e quindi aggiornare la pagina.
La pipeline indica che la distribuzione è riuscita. Questa volta l'operazione è riuscita perché è stato usato un file Bicep valido.
Pulire le risorse
Ora che l'esercizio è stato completato, è possibile rimuovere le risorse per evitare che vengano fatturate.
Nel terminale di Visual Studio Code eseguire il comando seguente:
az group delete --resource-group ToyWebsite --yes --no-wait
Il gruppo di risorse viene eliminato in background.
Remove-AzResourceGroup -Name ToyWebsite -Force