Oefening: een sjabloonspecificatie publiceren

Voltooid

Uw team heeft enkele door beveiliging beveiligde Bicep-bestanden gebouwd die compatibel zijn met het nieuwe governancemodel van uw bedrijf. Een van de beperkte Bicep-bestanden implementeert een op Linux gebaseerde Azure-app Service-app. In deze oefening gebruikt u een implementatiewerkstroom om het Bicep-bestand als sjabloonspecificatie te publiceren.

Tijdens het proces gaat u het volgende doen:

  • Voeg een linttaak toe aan de werkstroom.
  • Voeg een werkstroomtaak toe om de sjabloonspecificatie te publiceren.
  • Voer de werkstroom handmatig uit en controleer of deze is voltooid.
  • Controleer de gepubliceerde sjabloonspecificatie in Azure.

Een linttaak toevoegen aan uw werkstroom

Uw opslagplaats bevat een concept van een werkstroom die u als uitgangspunt kunt gebruiken.

  1. Vouw in Visual Studio Code de map .github/workflows uit in de hoofdmap van de opslagplaats.

  2. Open het template-spec-linux-app-service.yml bestand.

    Schermopname van Visual Studio Code met de locatie van het werkstroomdefinitiebestand.

    De werkstroomdefinitie bevat twee triggers. In deze oefening wijzigt u het Bicep-bestand voor de sjabloonspecificatie niet, zodat de push trigger nooit wordt geactiveerd. Als u uw werkstroom wilt uitproberen, roept u deze handmatig aan met behulp van de workflow_dispatch trigger.

  3. Voeg onder aan het bestand, waar u een opmerking ziet met de tekst # To be added, de volgende linttaakdefinitie toe:

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

    Uw opslagplaats heeft een bicepconfig.json-bestand waarmee de linter wordt geconfigureerd voor het verzenden van fouten in plaats van waarschuwingen. Fouten tijdens de linttaak leiden ertoe dat de werkstroom mislukt.

    Tip

    YAML-bestanden zijn gevoelig voor inspringing. Controleer of de inspringing juist is, ongeacht of u deze code typt of plakt. Verderop in deze oefening ziet u de volledige YAML-werkstroomdefinitie, zodat u kunt controleren of het bestand overeenkomt.

Een publicatietaak toevoegen aan uw werkstroom

U kunt nu een tweede taak toevoegen om de sjabloonspecificatie naar Azure te publiceren.

  1. Voeg de volgende code toe aan het einde van het template-spec-linux-app-service.yml-bestand :

    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
    

    Met deze taak wordt de code uit uw opslagplaats uitgecheckt en wordt u aangemeld bij Azure met behulp van de GitHub-geheimen die u hebt gemaakt. Vervolgens wordt de az ts create opdracht uitgevoerd om de sjabloonspecificatie naar Azure te publiceren.

    Tip

    Om het eenvoudig te houden, gebruikt uw werkstroom het uitvoeringsnummer van de werkstroom als versienummer van de sjabloonspecificatie. In de volgende les leert u meer over een complexer versiebeheerschema.

  2. Sla de wijzigingen in het bestand op.

Uw werkstroomdefinitie controleren en doorvoeren

  1. Controleer of uw template-spec-linux-app-service.yml bestand eruitziet zoals in het volgende voorbeeld:

    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
    

    Als dit niet het probleem is, werkt u deze bij zodat deze overeenkomt met dit voorbeeld en slaat u het op.

  2. Voer uw wijzigingen door en push deze naar uw Git-opslagplaats door de volgende opdrachten uit te voeren in de Visual Studio Code-terminal:

    git add .
    git commit -m "Add lint and publish jobs to Linux App Service template spec workflow"
    git push
    
  3. Dit is de eerste keer dat u naar deze opslagplaats hebt gepusht, dus u wordt mogelijk gevraagd u aan te melden.

    Typ in Windows 1 om te verifiëren met behulp van een webbrowser en selecteer vervolgens Enter.

    Selecteer Autoriseren in macOS.

  4. Er wordt een browservenster geopend. Mogelijk moet u zich opnieuw aanmelden bij GitHub. Selecteer Autoriseren.

De werkstroom activeren

  1. Selecteer in uw browser het tabblad Acties .

    Schermopname van GitHub met het tabblad Acties.

    Mislukte werkstroomuitvoeringen worden al vermeld, maar u hoeft zich er geen zorgen over te maken. De uitvoeringen zijn mislukt omdat de werkstroomdefinities nog niet zijn voltooid toen u de opslagplaats maakte.

  2. Selecteer de werkstroom template-spec-linux-app-service, selecteer de knop Werkstroom uitvoeren en selecteer vervolgens Werkstroom uitvoeren.

    Schermopname van GitHub met selecties voor het uitvoeren van de werkstroom van de sjabloonspecificatie.

    GitHub start een nieuwe werkstroomuitvoering. Mogelijk moet u het browservenster vernieuwen om te zien dat de uitvoering wordt weergegeven.

  3. Selecteer de meest recente uitvoering in de lijst.

    Schermopname van GitHub waarin de meest recente uitvoering van de werkstroom van de sjabloonspecificatie wordt gemarkeerd.

    Wacht tot de uitvoering van de werkstroom is voltooid. Wanneer dit het geval is, wordt de sjabloonspecificatie gepubliceerd naar Azure.

  4. Let op het uitvoeringsnummer van de werkstroom. Dit is waarschijnlijk 2.

    Schermopname van GitHub met een geslaagde werkstroomuitvoering en markeert het uitvoeringsnummer.

De sjabloonspecificatie in Azure controleren

U kunt ook de gepubliceerde sjabloonspecificatie bekijken in Azure Portal.

  1. Ga in een browser naar de Azure-portal.

  2. Ga naar de resourcegroep ToyReusable en selecteer de sjabloonspecificatie voor linux-app-service .

    Schermopname van Azure Portal waarin de resourcegroep wordt weergegeven, met de sjabloonspecificatie gemarkeerd.

  3. Bekijk de details van de sjabloonspecificatie.

    Schermopname van Azure Portal met de details van de sjabloonspecificatie.

    U ziet dat de nieuwste versie en het versienummer hetzelfde zijn als het uitvoeringsnummer van de werkstroom. Uw werkstroom gebruikt het uitvoeringsnummer voor het versienummer van de sjabloonspecificatie.