Övning – Publicera en mallspecifikation
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.
I Visual Studio Code expanderar du mappen .github/workflows i roten på lagringsplatsen.
Öppna filen template-spec-linux-app-service.yml .
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ösarenworkflow_dispatch
.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.
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.
Spara ändringarna i filen.
Verifiera och checka in arbetsflödesdefinitionen
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.
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
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.
Ett webbläsarfönster öppnas. Du kan behöva logga in på GitHub igen. Välj Auktorisera.
Utlösa arbetsflödet
Välj fliken Åtgärder i webbläsaren.
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.
Välj arbetsflödet template-spec-linux-app-service, välj knappen Kör arbetsflöde och välj sedan Kör arbetsflöde.
GitHub startar en ny arbetsflödeskörning. Du kan behöva uppdatera webbläsarfönstret för att se körningen visas.
Välj den senaste körningen i listan.
Vänta tills arbetsflödeskörningen har slutförts. När den gör det publiceras mallspecifikationen till Azure.
Observera arbetsflödets körningsnummer, som förmodligen är 2.
Granska mallspecifikationen i Azure
Du kan också visa den publicerade mallspecifikationen i Azure Portal.
I en webbläsare går du till Azure-portalen.
Gå till resursgruppen ToyReusable och välj mallspecifikationen linux-app-service .
Granska 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.