Esercizio - Pubblicare una specifica di modello

Completato

Il team ha alcuni file Bicep con protezione avanzata conformi al nuovo modello di governance dell'azienda. Uno dei file Bicep con protezione avanzata distribuisce un'app servizio app di Azure basata su Linux. In questo esercizio si usa una pipeline di distribuzione per pubblicare il file Bicep come specifica di modello.

Durante il processo, si eseguiranno queste operazioni:

  • Aggiungere una fase lint alla pipeline.
  • Aggiungere una fase pipeline per pubblicare la specifica di modello.
  • Verificare che la pipeline venga avviata e completata correttamente.
  • Controllare la specifica del modello pubblicata in Azure.

Aggiungere una fase lint alla pipeline

Il repository contiene una bozza di una definizione di pipeline che è possibile usare come punto di partenza.

  1. In Visual Studio Code espandere la cartella template-specs/linux-app-service nella radice del repository.

  2. Aprire il file pipeline.yml.

    Screenshot di Visual Studio Code che mostra il percorso del file di definizione della pipeline.

  3. Nella parte inferiore del file, sostituire # To be added con la definizione della fase lint seguente:

    stages:
    
    - stage: Lint
      jobs:
      - job: LintCode
        displayName: Lint code
        steps:
          - script: |
              az bicep build --file $(TemplateSpecFilePath)
            name: LintBicepCode
            displayName: Run Bicep linter
    

    Il repository contiene un file bicepconfig.json che configura il linter per generare errori anziché avvisi. Eventuali errori durante la fase lint causano l'esito negativo della pipeline.

    Suggerimento

    I file YAML sono sensibili al rientro. Se si digita o si incolla questo codice, assicurarsi che il rientro sia corretto. Più avanti in questo esercizio verrà visualizzata la definizione completa della pipeline YAML in modo da verificare la corrispondenza del file.

Aggiungere una fase di pubblicazione alla pipeline

È ora possibile aggiungere una seconda fase per pubblicare la specifica del modello in Azure.

  1. Aggiungere il codice seguente alla fine del file pipeline.yml:

    - stage: Publish
      jobs:
      - job: Publish
        steps:
          - task: AzureCLI@2
            name: Publish
            displayName: Publish template spec
            inputs:
              azureSubscription: $(ServiceConnectionName)
              scriptType: 'bash'
              scriptLocation: 'inlineScript'
              inlineScript: |
                az ts create \
                  --resource-group $(AzureResourceGroupName) \
                  --name $(TemplateSpecName) \
                  --version $(Build.BuildNumber) \
                  --template-file $(TemplateSpecFilePath) \
                  --location $(AzureRegion) \
                  --yes
    

    Questa fase estrae il codice dal repository e accede ad Azure usando la connessione al servizio creata. Esegue quindi il comando az ts create per pubblicare la specifica del modello in Azure.

    Suggerimento

    Per semplificare le cose, la pipeline usa il numero di compilazione della pipeline come numero di versione della specifica del modello. Nell'unità successiva si apprenderà uno schema di controllo delle versioni più complesso.

  2. Salvare le modifiche apportate al file .

Verificare ed eseguire il commit della definizione della pipeline

  1. Verificare che il file pipelines.yml sia simile all'esempio seguente:

    trigger:
      batch: true
      branches:
        include:
        - main
      paths:
        include:
        - 'template-specs/linux-app-service/**'
    
    variables:
    - name: ServiceConnectionName
      value: ToyReusable
    - name: AzureResourceGroupName
      value: ToyReusable
    - name: AzureRegion
      value: westus3
    - name: TemplateSpecName
      value: linux-app-service
    - name: TemplateSpecFilePath
      value: template-specs/linux-app-service/main.bicep
    
    pool:
      vmImage: ubuntu-latest
    
    stages:
    
    - stage: Lint
      jobs:
      - job: LintCode
        displayName: Lint code
        steps:
          - script: |
              az bicep build --file $(TemplateSpecFilePath)
            name: LintBicepCode
            displayName: Run Bicep linter
    
    - stage: Publish
      jobs:
      - job: Publish
        steps:
          - task: AzureCLI@2
            name: Publish
            displayName: Publish template spec
            inputs:
              azureSubscription: $(ServiceConnectionName)
              scriptType: 'bash'
              scriptLocation: 'inlineScript'
              inlineScript: |
                az ts create \
                  --resource-group $(AzureResourceGroupName) \
                  --name $(TemplateSpecName) \
                  --version $(Build.BuildNumber) \
                  --template-file $(TemplateSpecFilePath) \
                  --location $(AzureRegion) \
                  --yes
    

    In caso contrario, aggiornarlo in modo che corrisponda a questo esempio e salvarlo.

  2. 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 lint and publish stages to Linux App Service template spec pipeline"
    git push
    

    Subito dopo il push, Azure Pipelines avvia una nuova esecuzione della pipeline.

Monitorare la pipeline

  1. Nel browser selezionare Pipelines>Pipelines.

    Screenshot di Azure Pipelines che mostra la voce di menu Pipeline.

  2. Selezionare l'esecuzione della pipeline attiva.

  3. Verrà visualizzata l'esecuzione della pipeline.

    Attendere il completamento dell'esecuzione della pipeline. Al termine, la specifica del modello viene pubblicata in Azure.

    Screenshot di Azure Pipelines che mostra un'esecuzione della pipeline riuscita ed evidenzia il numero di build.

  4. Si noti il numero di compilazione della pipeline, che include la data odierna e un numero di revisione univoco. Nello screenshot di esempio il numero di build è 20230407.1.

Esaminare la specifica di modello in Azure

È anche possibile visualizzare la specifica di modello pubblicata nel portale di Azure.

  1. Nel browser passare al portale di Azure.

  2. Passare al gruppo di risorse ToyReusable e selezionare la specifica di modello linux-app-service.

    Screenshot del portale di Azure che mostra il gruppo di risorse con la specifica di modello evidenziata.

  3. Esaminare i dettagli della specifica di modello.

    Screenshot del portale di Azure che mostra i dettagli della specifica di modello.

    Si noti che il numero di Versione più recente e Versione corrisponde al numero di compilazione della pipeline. La pipeline usa il numero di compilazione per il numero di versione della specifica di modello.