Använda azure-webbappens distributionsåtgärd med Azure Stack Hub

Du kan konfigurera GitHub Actions för att distribuera en webbapp till din Azure Stack Hub-instans. På så sätt kan du konfigurera kontinuerlig integrering och distribution för din app. Den här artikeln hjälper dig att komma igång med automatiserad distribution med hjälp av GitHub Actions och Azure Stack Hub. Du skapar en webbapp och använder publiceringsprofilen för att skapa webbappen som värd för din app.

GitHub Actions är arbetsflöden som består av åtgärder som möjliggör automatisering direkt i kodlagringsplatsen. Du kan utlösa arbetsflödena med händelser i din GitHub-utvecklingsprocess. Du kan ange vanliga DevOps-automatiseringsuppgifter som testning, distribution och kontinuerlig integrering.

Det här exempelarbetsflödet innehåller instruktioner för:

  • Skapa och validera ditt tjänsthuvudkonto
  • Skapa din webbapps publiceringsprofil
  • Lägga till ett körningsspecifikt arbetsflöde
  • Lägga till ett matchande arbetsflöde med webbappsdistribution

Skapa ett huvudnamn för tjänsten

Tjänstkontoprincipalen kan använda rollbaserad åtkomstkontroll för att ansluta till och interagera med resurser. Du behöver ett huvudnamn för tjänsten med deltagaråtkomst och de attribut som anges i de här anvisningarna för användning med dina GitHub Actions.

Viktig

Om du är utvecklare eller användare av Azure Stack Hub har du inte behörighet att skapa ett huvudnamn för tjänsten. Du måste antingen ha behörighet som molnoperatör eller begära den här principen från molnoperatören med hjälp av anvisningarna i det här avsnittet.

Följande kodexempel är skrivna för en Windows-dator med hjälp av PowerShell-prompten och Azure CLI. Om du använder CLI på en Linux-dator och bash tar du antingen bort linjetillägget eller ersätter dem med en \.

  1. Förbered värdena för följande parametrar som används för att skapa tjänstens huvudnamn:

    Parameter Exempel Beskrivning
    slutpunkt-resurshanterare "https://management.orlando.azurestack.corp.microsoft.com" Slutpunkten för resurshantering.
    suffix-lagringsslutpunkt "orlando.azurestack.corp.microsoft.com" Slutpunktssuffixet för lagringskonton.
    suffix-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" Key Vault-tjänstens dns-suffix.
    endpoint-aktiv-katalog-graf-resurs-id "https://graph.windows.net/" ID för Active Directory-resurs
    endpoint-sql-management https://notsupported Sql Server-hanteringsslutpunkten. Ställ in på https://notsupported
    profil 2020-09-01-hybrid Profil som ska användas för det här molnet.
  2. Öppna kommandoradsverktyget, till exempel Windows PowerShell eller Bash. Logga in på Azure CLI med följande kommando:

    az login
    
  3. Använd kommandot register för en ny miljö eller kommandot update om du använder en befintlig miljö. Använd följande kommando.

    az cloud register `
        -n "AzureStackUser" `
        --endpoint-resource-manager "https://management.<local>.<FQDN>" `
        --suffix-storage-endpoint ".<local>.<FQDN>" `
        --suffix-keyvault-dns ".vault.<local>.<FQDN>" `
        --endpoint-active-directory-graph-resource-id "https://graph.windows.net/" `
        --endpoint-sql-management https://notsupported  `
        --profile 2020-09-01-hybrid
    
  4. Hämta prenumerations-ID och resursgrupp som du vill använda för tjänstens huvudnamn.

  5. Skapa tjänstens huvudnamn med följande kommando med prenumerations-ID och resursgrupp:

    az ad sp create-for-rbac --name "myApp" --role contributor `
        --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} `
        --sdk-auth
    
  6. Kopiera det resulterande JSON-objektet. Du använder JSON-objektet för att skapa din hemlighet på din GitHub-lagringsplats som innehåller din åtgärd. JSON-objektet bör ha följande attribut:

    {
      "clientId": <Application ID for the service principal>,
      "clientSecret": <Client secret for the service principal>,
      "subscriptionId": <Subscription ID for the service principal>,
      "tenantId": <Tenant ID for the service principal>,
      "activeDirectoryEndpointUrl": "https://login.microsoftonline.com/",
      "resourceManagerEndpointUrl": "https://management.<FQDN>",
      "activeDirectoryGraphResourceId": "https://graph.windows.net/",
      "sqlManagementEndpointUrl": "https://notsupported",
      "galleryEndpointUrl": "https://providers.<FQDN>:30016/",
      "managementEndpointUrl": "https://management.<FQDN>"
    }
    

Skapa webbappens publiceringsprofil

Öppna bladet Skapa webbapp

  1. Logga in på Azure Stack Hub-portalen.
  2. Välj Skapa en resurs>Web + Mobile>Web App. Skapa en webbapp i Azure Stack Hub

Så här skapar du din webbapp

  1. Välj din Prenumeration.
  2. Skapa eller välj en resursgrupp.
  3. Skriv namnet på din app . Namnet på appen visas i URL:en för din app, till exempel yourappname.appservice.<region>.<FQDN>
  4. Välj Runtime-stacken för din app. Körmiljön måste matcha det arbetsflöde som du använder för att målsätta din publiceringsprofil.
  5. Välj det operativsystem (OS) som ska vara värd för din körningsmiljö och app.
  6. Välj eller skriv Region för din Azure Stack Hub-instans.
  7. Välj planen baserat på din Azure Stack Hub-instans, region och appoperativsystem.
  8. Välj Granska + Skapa.
  9. Granska webbapplikationen. Välj Skapa. Granska webbapp i Azure Stack Hub
  10. Välj Gå till resurs. Hämta publiceringsprofil i Azure Stack Hub
  11. Välj Hämta publiceringsprofil. Publiceringsprofilen laddas ned och heter <yourappname>.PublishSettings. Filen innehåller en XML med målvärdena för webbappen.
  12. Lagra din publiceringsprofil så att du kan komma åt den när du skapar hemligheterna för lagringsplatsen.

Lägga till dina hemligheter på lagringsplatsen

Du kan använda GitHub-hemligheter för att kryptera känslig information som ska användas i dina åtgärder. Du skapar en hemlighet som innehåller tjänstens huvudnamn och en annan hemlighet som ska innehålla din webbapps publiceringsprofil. Åtgärden använder dessa för att logga in på din Azure Stack Hub-instans och skapa din app till webbappens mål.

  1. Öppna eller skapa en GitHub-lagringsplats. Om du behöver hjälp med att skapa en lagringsplats i GitHub kan du hitta instruktioner i GitHub-dokumenten.
  2. Välj Inställningar.
  3. Välj Hemligheter.
  4. Välj Ny repository-hemlighet. Lägg till din GitHub Actions-hemlighet
  5. Ge din hemlighet namnet AZURE_CREDENTIALS.
  6. Klistra in JSON-objektet som representerar tjänstens huvudnamn.
  7. Välj Lägg till hemlig.
  8. Välj Ny hemlighet för lagringsplats.
  9. Ge din hemlighet namnet AZURE_WEBAPP_PUBLISH_PROFILE.
  10. Öppna din <yourappname>.PublishSettings i en textredigerare och kopiera och klistra sedan in XML i lagringsplatsens hemlighet.
  11. Välj Lägg till hemlig.

Lägga till ett körningsarbetsflöde

  1. Välj en mall från tabellen för körtid för din webbapp.

    Körtid Mall
    DotNet dotnet.yml
    NodeJS node.yml
    Java java_jar.yml
    Java java_war.yml
    Python python.yml
    PHP php.yml
    Docker docker.yml
  2. Placera mallens GitHub Actions-arbetsflödeskatalog i projektlagringsplatsen: .github/workflows/<runtime.yml> Arbetsflödeskatalogen innehåller två arbetsflöden.

Lägg till åtgärden för distribution av webbappen

Skapa ett andra arbetsflöde med yaml i det här avsnittet. I det här exemplet distribuerar du en Python-webbapp. Du skulle behöva välja en konfigurationsåtgärd baserat på ditt arbetsflöde. Du hittar referenser för att konfigurera åtgärder för olika körtider i tabellen konfigurationsåtgärder för olika körtider, efter stegen för att skapa åtgärden.

Exempel på GitHub Actions-arbetsflöde

  1. Öppna din GitHub-lagringsplats. Om du inte redan har lagt till dina webbappprogramresurser lägger du till dem nu. I det här exemplet använder jag exemplet Python Flask Hello World och lade till Python-.gitignore, app.pyoch requirements.txt filer.

    Exempel på repo med Python Flask och Azure Stack Hub

  2. Välj Åtgärder.

  3. Välj Nytt arbetsflöde.

    • Om det här är ditt första arbetsflöde väljer du konfigurera ett arbetsflöde själv under Välj en arbetsflödesmall.
    • Om du har befintliga arbetsflöden väljer du Nytt arbetsflöde>Konfigurera ett arbetsflöde själv.
  4. I sökvägen namnger du filen workflow.yml.

  5. Kopiera och klistra in arbetsflödets yml.

    # .github/workflows/worfklow.yml
    on: push
    
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
        # checkout the repo
        - name: 'Checkout Github Action' 
          uses: actions/checkout@main
    
        - name: Setup Python 3.6
          uses: actions/setup-node@v1
          with:
            python-version: '3.6'
        - name: 'create a virtual environment and install dependencies'
          run: |
            python3 -m venv .venv
            source .venv/bin/activate
            pip install -r requirements.txt
    
        - name: 'Run Azure webapp deploy action using publish profile credentials'
          uses: azure/webapps-deploy@v2
          with:
            app-name: <YOURAPPNAME>
            publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
    
  6. Uppdatera <YOURAPPNAME> till ditt appnamn i filen workflow.yaml.

  7. Välj Starta kommitt.

  8. Lägg till commit-rubrik och valfri information, och välj sedan Commita ny fil.

Konfigurationsåtgärder för olika körningstider

Om du vill skapa appkod i en specifik språkbaserad miljö använder du konfigurationsåtgärder:

Körtid Konfigurera åtgärder
DotNet Konfigurera DotNet-
NodeJS Konfigurera node
Java Konfigurera Java -
Python Konfigurera Python-
Docker docker-login

När inloggningsåtgärden är klar kan nästa uppsättning åtgärder i arbetsflödet utföra uppgifter som att skapa, tagga och push-överföra containrar. Mer information finns i dokumentationen för åtgärden Azure Webapp.

Aktivera distribueringen

När åtgärden körs, verifiera att den har körts framgångsrikt.

  1. Öppna din GitHub-lagringsplats. Du kan utlösa arbetsflödet genom att skicka till lagringsplatsen.
  2. Välj Åtgärder.
  3. Välj namnet på commit under Alla arbetsflöden. Båda arbetsflödena har loggat sin status. Granska status för din GitHub-åtgärd
  4. Välj namnet på jobbet för distributionen .github/workflows/workflow.yml.
  5. Expandera avsnitten för att granska returvärdena för dina arbetsflödesåtgärder. Hitta URL:en för din distribuerade webbapp. Hitta webbadressen till din Azure Stack Hub-webbapp
  6. Öppna en webbläsare och läs in URL:en.

Nästa steg