Esercizio - Creare un flusso di lavoro per una richiesta pull
Il team di sviluppo del sito Web ha chiesto di aggiornare il sito Web da eseguire nel sistema operativo Linux. In questo esercizio si aggiungerà un flusso di lavoro di convalida che viene eseguito automaticamente quando una richiesta pull viene aperta o aggiornata. Si creerà quindi una richiesta pull per la modifica del sistema operativo del sito Web.
Durante il processo, si eseguiranno queste operazioni:
- Creare un flusso di lavoro per la convalida della richiesta pull.
- Aggiungere il linting Bicep al flusso di lavoro.
- Creare una richiesta pull e controllare l'esecuzione del flusso di lavoro.
- Correggere eventuali errori identificati dal flusso di lavoro di convalida della richiesta pull.
- Eseguire nuovamente il flusso di lavoro e quindi unire e chiudere la richiesta pull.
Creare un flusso di lavoro da eseguire quando vengono create e aggiornate le richieste pull
In Visual Studio Code creare un nuovo file nella cartella denominata pr-validation.yml in the .github/workflows.
Aggiungere il seguente codice al file:
name: pr-validation on: pull_request
Questo codice garantisce che il flusso di lavoro venga eseguito ogni volta che viene creata o aggiornata una richiesta pull.
Nota
Si sta lavorando direttamente al ramo principale del repository. Questa operazione non è normale, ma in questo esercizio si utilizzerà il principale per semplificare i passaggi. Nei propri progetti è importante configurare le regole di protezione dei rami per proteggere il ramo principale.
Aggiungere un processo lint al flusso di lavoro
Ogni volta che si apre o si modifica una richiesta pull, si vuole eseguire un passaggio di linting per i file Bicep. È disponibile un flusso di lavoro lint riutilizzabile nel repository che è possibile chiamare da questo flusso di lavoro.
Alla fine del contenuto del file esistente, per riutilizzare il flusso di lavoro lint definito nel repository, aggiungere le righe seguenti:
jobs: lint: uses: ./.github/workflows/lint.yml
Il repository ha un file bicepconfig.json che configura il linter affinché generi errori anziché avvisi, pertanto eventuali errori durante il processo lint causeranno l'esito negativo del flusso di lavoro.
Salva le modifiche.
Eseguire il commit e il push delle modifiche nel ramo principale del repository Git eseguendo i comandi seguenti nel terminale di Visual Studio Code:
git add . git commit -m "Add first version of pull request validation workflow" git push
Aggiornare il file Bicep
Modificare quindi il file Bicep del sito Web per aggiornare il sistema operativo del sito Web in Linux.
Nel terminale Visual Studio Code creare un nuovo ramo per le modifiche eseguendo il comando seguente:
git checkout -b feature/linux-app
Aprire il file main.bicep nella cartella deploy.
Nella parte superiore del file, sotto le definizioni delle variabili, definire una nuova variabile per il framework dell'applicazione da usare:
// Define the names for resources. var appServiceAppName = 'toy-website-linux-${resourceNameSuffix}' var appServicePlanName = 'toy-website-linux' var storageAccountName = 'mystorage${resourceNameSuffix}' var appServiceAppLinuxFrameworkVersion = 'node|14-lts'
Questa impostazione indica a Servizio app di Azure che l'applicazione verrà compilata usando la versione 14 del framework Node.js.
Aggiornare la definizione di risorsa
appServicePlan
. Aggiungere la proprietàkind
e la proprietàreserved
nell'oggettoproperties
:resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = { name: appServicePlanName location: location sku: environmentConfigurationMap[environmentType].appServicePlan.sku kind: 'linux' properties: { reserved: true } }
Aggiornare la definizione della risorsa
appServiceApp
per impostare il framework dell'applicazione:resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { linuxFxVersion: 'node|14-lts' } } }
Nota
Si potrebbe notare che Bicep avvisa che non si sta usando la variabile
appServiceAppLinuxFrameworkVersion
. In questo caso, si sta causando intenzionalmente un errore del linter in modo da poter vedere come appare all'interno della richiesta pull di GitHub.Salva le modifiche.
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 "Update operating system to Linux" git push origin feature/linux-app
Crea una richiesta pull
Dopo aver configurato il flusso di lavoro e dopo che il file Bicep viene aggiornato, è possibile creare una richiesta pull.
Nel browser selezionare Codice.
Selezionare 2 rami per aprire l'elenco di rami nel repository GitHub.
L'opzione Confronto e richiesta pull viene visualizzata per un breve periodo di tempo quando si esegue il push delle modifiche al ramo che non ha già una richiesta pull aperta. Si tratta di un collegamento alla pagina Open a pull request.
Accanto al ramo feature/linux-app selezionare Nuova richiesta pull. Potrebbe essere necessario selezionare l'icona Altro (...) per visualizzare l'opzione Nuova richiesta pull.
Selezionare Crea richiesta pull.
Viene visualizzata la pagina dei dettagli della richiesta pull.
Visualizzare la sezione Controlli dei dettagli della richiesta pull.
Dopo un momento, si noterà che è stato attivato un controllo automatico. Il controllo esegue il flusso di lavoro di convalida della richiesta pull.
L'avvio dell'esecuzione del flusso di lavoro può richiedere tempo. Aggiornare la finestra del browser finché non vengono visualizzati i controlli di stato.
Al termine del controllo, è possibile notare che non è riuscito.
Nota
GitHub consente di unire la richiesta pull anche se i controlli di stato non sono riusciti. In una soluzione reale è necessario configurare una regola di protezione del ramo per impedire l'unione di una richiesta pull fino a quando i controlli di stato non sono riusciti.
Correggere gli errori di convalida della richiesta pull
Nel riquadro di controllo dello stato selezionare Dettagli per controllare il log del flusso di lavoro.
Il log include questo messaggio dal linter Bicep:
Error no-unused-vars: Variable "appServiceAppLinuxFrameworkVersion" is declared but never used.
In Visual Studio Code aprire il file deploy/main.bicep.
Alla riga 20 è presente una variabile denominata
appServiceAppLinuxFrameworkVersion
. La variabile non viene usata. Verrà quindi risolto questo errore.Nella definizione della risorsa
appServiceApp
aggiornare la proprietàlinuxFxVersion
per usare la variabile anziché impostare la proprietà sul valore hardcoded:resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { linuxFxVersion: appServiceAppLinuxFrameworkVersion } } }
Nel terminale di Visual Studio Code eseguire il commit e il push delle modifiche al repository.
git add . git commit -m "Fix Bicep file" git push origin feature/linux-app
Monitorare e unire la richiesta pull
Riaprire il browser nella pagina dei dettagli della richiesta pull.
La convalida della richiesta pull viene eseguita di nuovo. Se il controllo di stato non è in esecuzione, aggiornare la pagina.
Attendere il completamento del controllo. Questa volta, ha esito positivo. Non sono presenti errori di sintassi o linter nel file Bicep, quindi è possibile unire la richiesta pull.
Selezionare Merge pull request (Esegui merge della richiesta pull) per chiudere la richiesta pull e unire le modifiche nel ramo principale.
Selezionare Confirm merge.