Övning – Publicera en mallspecifikation

Slutförd

Ditt team har skapat några säkerhetshärdade Bicep-filer som är kompatibla med företagets nya styrningsmodell. En av de härdade Bicep-filerna distribuerar en Linux-baserad Azure App Service-app. I den här övningen använder du ett distributionsarbetsflöde för att publicera Bicep-filen som en mallspecifikation.

Under processen gör du följande:

  • Lägg till ett lint-jobb i arbetsflödet.
  • Lägg till ett arbetsflödesjobb för att publicera mallspecifikationen.
  • Kör arbetsflödet manuellt och kontrollera att det har slutförts.
  • Kontrollera den publicerade mallspecifikationen i Azure.

Lägga till ett lint-jobb i arbetsflödet

Lagringsplatsen innehåller ett utkast till ett arbetsflöde som du kan använda som utgångspunkt.

  1. I Visual Studio Code expanderar du mappen .github/workflows i roten på lagringsplatsen.

  2. Öppna filen template-spec-linux-app-service.yml .

    Skärmbild av Visual Studio Code som visar platsen för arbetsflödesdefinitionsfilen.

    Arbetsflödesdefinitionen innehåller två utlösare. I den här övningen ändrar du inte Bicep-filen för mallspecifikationen, så utlösaren push utlöses aldrig. Om du vill prova arbetsflödet anropar du det manuellt med hjälp av utlösaren workflow_dispatch .

  3. Längst ned i filen, där du ser en kommentar som säger # To be added, lägger du till följande lint-jobbdefinition:

    jobs:
      lint:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - name: Run Bicep linter
          run: az bicep build --file ${{ env.TEMPLATE_SPEC_FILE_PATH }}
    

    Lagringsplatsen har en bicepconfig.json fil som konfigurerar linter för att generera fel i stället för varningar. Eventuella fel under lint-jobbet gör att arbetsflödet misslyckas.

    Dricks

    YAML-filer är känsliga för indrag. Oavsett om du skriver eller klistrar in den här koden kontrollerar du att indraget är korrekt. Senare i den här övningen visas den fullständiga YAML-arbetsflödesdefinitionen så att du kan kontrollera att filen matchar.

Lägga till ett publiceringsjobb i arbetsflödet

Nu kan du lägga till ett andra jobb för att publicera mallspecifikationen i Azure.

  1. Lägg till följande kod i slutet av template-spec-linux-app-service.yml-filen:

    publish:
      runs-on: ubuntu-latest
      needs: [ lint ]
      steps:
      - uses: actions/checkout@v3
      - uses: azure/login@v1
        name: Sign in to Azure
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
      - uses: azure/cli@v1
        name: Publish template spec
        with:
          inlineScript: |
            az ts create \
              --resource-group ${{ env.AZURE_RESOURCEGROUP_NAME }} \
              --name ${{ env.TEMPLATE_SPEC_NAME }} \
              --version ${{ github.run_number }} \
              --template-file ${{ env.TEMPLATE_SPEC_FILE_PATH }} \
              --location ${{ env.AZURE_REGION }} \
              --yes
    

    Det här jobbet checkar ut koden från lagringsplatsen och loggar in på Azure med hjälp av GitHub-hemligheterna som du skapade. Sedan körs az ts create kommandot för att publicera mallspecifikationen till Azure.

    Dricks

    För att hålla det enkelt använder arbetsflödet arbetsflödets körningsnummer som mallspecifikationens versionsnummer. I nästa lektion får du lära dig mer om ett mer komplext versionsschema.

  2. Spara ändringarna i filen.

Verifiera och checka in arbetsflödesdefinitionen

  1. Kontrollera att filen template-spec-linux-app-service.yml ser ut som i följande exempel:

    name: template-spec-linux-app-service
    concurrency: template-spec-linux-app-service
    
    on:
      workflow_dispatch:
      push:
        branches:
          - main
        paths:
          - 'template-specs/linux-app-service/**'
    
    permissions:
      id-token: write
      contents: read
    
    env:
      AZURE_RESOURCEGROUP_NAME: ToyReusable
      AZURE_REGION: westus3
      TEMPLATE_SPEC_NAME: linux-app-service
      TEMPLATE_SPEC_FILE_PATH: template-specs/linux-app-service/main.bicep
    
    jobs:
      lint:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - name: Run Bicep linter
          run: az bicep build --file ${{ env.TEMPLATE_SPEC_FILE_PATH }}
    
      publish:
        runs-on: ubuntu-latest
        needs: [ lint ]
        steps:
        - uses: actions/checkout@v3
        - uses: azure/login@v1
          name: Sign in to Azure
          with:
            client-id: ${{ secrets.AZURE_CLIENT_ID }}
            tenant-id: ${{ secrets.AZURE_TENANT_ID }}
            subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
        - uses: azure/cli@v1
          name: Publish template spec
          with:
            inlineScript: |
              az ts create \
                --resource-group ${{ env.AZURE_RESOURCEGROUP_NAME }} \
                --name ${{ env.TEMPLATE_SPEC_NAME }} \
                --version ${{ github.run_number }} \
                --template-file ${{ env.TEMPLATE_SPEC_FILE_PATH }} \
                --location ${{ env.AZURE_REGION }} \
                --yes
    

    Om den inte gör det uppdaterar du den så att den matchar det här exemplet och sparar det sedan.

  2. Checka in och skicka ändringarna till Git-lagringsplatsen genom att köra följande kommandon i Visual Studio Code-terminalen:

    git add .
    git commit -m "Add lint and publish jobs to Linux App Service template spec workflow"
    git push
    
  3. Det här är första gången du skickar till den här lagringsplatsen, så du kan uppmanas att logga in.

    I Windows skriver du 1 för att autentisera med hjälp av en webbläsare och väljer sedan Retur.

    På macOS väljer du Auktorisera.

  4. Ett webbläsarfönster öppnas. Du kan behöva logga in på GitHub igen. Välj Auktorisera.

Utlösa arbetsflödet

  1. Välj fliken Åtgärder i webbläsaren.

    Skärmbild av GitHub som visar fliken Åtgärder.

    Misslyckade arbetsflödeskörningar visas redan, men du behöver inte bekymra dig om dem. Körningarna misslyckades eftersom arbetsflödesdefinitionerna ännu inte slutfördes när du skapade lagringsplatsen.

  2. Välj arbetsflödet template-spec-linux-app-service, välj knappen Kör arbetsflöde och välj sedan Kör arbetsflöde.

    Skärmbild av GitHub som visar val för att köra mallspecifikationens arbetsflöde.

    GitHub startar en ny arbetsflödeskörning. Du kan behöva uppdatera webbläsarfönstret för att se körningen visas.

  3. Välj den senaste körningen i listan.

    Skärmbild av GitHub som visar den senaste körningen av mallspecifikationens arbetsflöde.

    Vänta tills arbetsflödeskörningen har slutförts. När den gör det publiceras mallspecifikationen till Azure.

  4. Observera arbetsflödets körningsnummer, som förmodligen är 2.

    Skärmbild av GitHub som visar en lyckad arbetsflödeskörning och visar körningsnumret.

Granska mallspecifikationen i Azure

Du kan också visa den publicerade mallspecifikationen i Azure Portal.

  1. I en webbläsare går du till Azure-portalen.

  2. Gå till resursgruppen ToyReusable och välj mallspecifikationen linux-app-service .

    Skärmbild av Azure Portal som visar resursgruppen med mallspecifikationen markerad.

  3. Granska information om mallspecifikationen.

    Skärmbild av Azure Portal som visar information om mallspecifikationen.

    Observera att den senaste versionen och versionsnumret är samma som arbetsflödets körningsnummer. Arbetsflödet använder körningsnumret för mallspecifikationens versionsnummer.