Esercizio - Creare un flusso di lavoro per una richiesta pull

Completato

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

  1. In Visual Studio Code creare un nuovo file nella cartella denominata pr-validation.yml in the .github/workflows.

    Screenshot of Visual Studio Code that shows the PR validation dot YML file within the workflows folder.

  2. 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.

  1. 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.

  2. Salva le modifiche.

  3. 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.

  1. Nel terminale Visual Studio Code creare un nuovo ramo per le modifiche eseguendo il comando seguente:

    git checkout -b feature/linux-app
    
  2. Aprire il file main.bicep nella cartella deploy.

  3. 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.

  4. Aggiornare la definizione di risorsa appServicePlan. Aggiungere la proprietà kind e la proprietà reserved nell'oggetto properties:

    resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
      name: appServicePlanName
      location: location
      sku: environmentConfigurationMap[environmentType].appServicePlan.sku
      kind: 'linux'
      properties: {
        reserved: true
      }
    }
    
  5. 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.

  6. Salva le modifiche.

  7. 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.

  1. Nel browser selezionare Codice.

  2. Selezionare 2 rami per aprire l'elenco di rami nel repository GitHub.

    Screenshot of GitHub that shows the repository's branch list.

    Compare & pull request viene visualizzato per un breve periodo di tempo quando si esegue il push delle modifiche al ramo che non dispone già di una richiesta pull aperta. Si tratta di un collegamento alla pagina Open a pull request.

  3. Accanto al ramo feature/linux-app selezionare Nuova richiesta pull.

    Screenshot of GitHub that shows the link to create a pull request for the feature slash linux app branch.

  4. Selezionare Crea richiesta pull.

    Screenshot of GitHub 'Open a pull request' pane, which displays the 'Create pull request' button.

    Viene visualizzata la pagina dei dettagli della richiesta pull.

  5. 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.

    Screenshot of GitHub that shows the failed status check on the pull request details page.

    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

  1. Nel riquadro di controllo dello stato selezionare Dettagli per controllare il log del flusso di lavoro.

    Screenshot of GitHub that shows the workflow log, including the validation error.

    Il log include questo messaggio dal linter Bicep:

    Error no-unused-vars: Variable "appServiceAppLinuxFrameworkVersion" is declared but never used.
    
  2. 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.

  3. 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
        }
      }
    }
    
  4. 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

  1. 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 avuto esito positivo. Non sono presenti errori di sintassi o linter nel file Bicep, quindi è possibile unire la richiesta pull.

  2. Selezionare Merge pull request (Esegui merge della richiesta pull) per chiudere la richiesta pull e unire le modifiche nel ramo principale.

    Screenshot of GitHub that shows the 'Merge pull request' button on the pull request details page.

  3. Selezionare Confirm merge.