Esercizio - Aggiornare il trigger del flusso di lavoro
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à il flusso di lavoro creato per l'esecuzione automatica ogni volta che un file cambia nel ramo main. Si userà il flusso di lavoro aggiornato per distribuire nel sito Web la modifica della configurazione richiesta.
Durante il processo, si eseguiranno queste operazioni:
- Aggiornare il flusso di lavoro in modo che venga attivato automaticamente ogni volta che un file cambia nella cartella deploy nel ramo main.
- Apportare una modifica al file Bicep.
- Verificare che il flusso di lavoro venga eseguito automaticamente.
Aggiornare il trigger in modo che sia basato sul ramo
In Visual Studio Code aprire il file .github/workflows/workflow.yml.
Nella parte superiore del file, sotto la riga
name: deploy-toy-website
, aggiungere il codice seguente per impedire l'esecuzione di più flussi di lavoro simultanei:name: deploy-toy-website concurrency: toy-company
Rimuovere il trigger manuale, ovvero l'attuale riga
on: [workflow_dispatch]
.Tra
concurrency:
epermissions:
, aggiungere la definizione di trigger seguente:concurrency: toy-company on: push: branches: - main paths: - 'deploy/**' permissions:
Salvare le modifiche apportate al file.
Eseguire il commit delle modifiche, ma non eseguire ancora il push. Si eseguirà il push delle modifiche a 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 che l'esecuzione del flusso di lavoro non riesce
Nel browser selezionare il menu Actions di GitHub e selezionare il flusso di lavoro.
Selezionare l'esecuzione più recente del flusso di lavoro per verificare che il flusso di lavoro sia stato eseguito automaticamente. Il flusso di lavoro è stato eseguito perché è stato eseguito il push delle modifiche in un ramo monitorato dal trigger di push. Se il flusso di lavoro è ancora in esecuzione, attendere un minuto e quindi aggiornare la pagina.
Il flusso di lavoro mostra una distribuzione non riuscita.
Per diagnosticare l'errore, selezionare il processo deploy e selezionare l'attività arm-deploy non riuscita.
Si noti che 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é il flusso di lavoro 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 il flusso di lavoro viene attivato 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@2023-12-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 che l'esecuzione del flusso di lavoro riesce
In GitHub tornare all'elenco dei flussi di lavoro e selezionare il flusso di lavoro.
Selezionare l'esecuzione più recente. Se il flusso di lavoro è ancora in esecuzione, attendere un minuto e quindi aggiornare la pagina.
Viene visualizzata l'esecuzione del flusso di lavoro.
Il flusso di lavoro 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