De implementatieactie voor Azure-web-apps gebruiken met Azure Stack Hub

U kunt GitHub Actions instellen om een web-app te implementeren in uw Azure Stack Hub-exemplaar. Hiermee kunt u continue integratie en implementatie voor uw app instellen. Dit artikel helpt u aan de slag te gaan met geautomatiseerde implementatie met behulp van GitHub Actions en Azure Stack Hub. U maakt een web-app en gebruikt het publicatieprofiel om de web-app te maken voor het hosten van uw app.

GitHub Actions zijn werkstromen die bestaan uit acties die automatisering rechtstreeks in uw codeopslagplaats mogelijk maken. U kunt de werkstromen activeren met gebeurtenissen in uw GitHub-ontwikkelingsproces. U kunt algemene DevOps-automatiseringstaken instellen, zoals testen, implementeren en continue integratie.

Deze voorbeeldwerkstroom bevat instructies voor:

  • Uw service-principal maken en valideren
  • Het publicatieprofiel voor uw web-app maken
  • Een runtime-specifieke werkstroom toevoegen
  • Een overeenkomende werkstroom toevoegen met web-app implementeren

Een service-principal maken

Een service-principal kan op rollen gebaseerd toegangsbeheer gebruiken om verbinding te maken met en te communiceren met resources. U hebt een service-principal met inzendertoegang en de kenmerken die in deze instructies zijn opgegeven, nodig voor gebruik met uw GitHub Actions.

Belangrijk

Als u een ontwikkelaar of gebruiker van Azure Stack Hub bent, bent u niet gemachtigd om een service-principal te maken. U moet cloudoperatorbevoegdheden hebben of dit principe aanvragen bij uw cloudoperator met behulp van de instructies in deze sectie.

De volgende codefragmenten zijn geschreven voor een Windows-computer met behulp van de PowerShell-prompt met Azure CLI. Als u CLI op een Linux-computer en bash gebruikt, verwijdert u de regelextensie of vervangt u deze door een \.

  1. Bereid de waarden voor van de volgende parameters die worden gebruikt om de service-principal te maken:

    Parameter Voorbeeld Beschrijving
    endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" Het eindpunt voor resourcebeheer.
    achtervoegsel opslag-eindpunt "orlando.azurestack.corp.microsoft.com" Het eindpuntachtervoegsel voor opslagaccounts.
    achtervoegsel-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" Het dns-achtervoegsel van de Key Vault-service.
    endpoint-active-directory-graph-resource-id "https://graph.windows.net/" De resource-id voor Active Directory.
    endpoint-sql-management https://notsupported Het sql Server Management-eindpunt. Stel dit in op https://notsupported
    profiel 2020-09-01-hybride Profiel dat moet worden gebruikt voor deze cloud.
  2. Open het opdrachtregelprogramma, zoals Windows PowerShell of Bash. Meld u aan bij Azure CLI met de volgende opdracht:

    az login
    
  3. Gebruik de register opdracht voor een nieuwe omgeving of de update opdracht als u een bestaande omgeving gebruikt. Gebruik de volgende opdracht.

    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. Haal de abonnements-id en resourcegroep op die u wilt gebruiken voor de service-principal.

  5. Maak de service-principal met behulp van de volgende opdracht met de abonnements-id en resourcegroep:

    az ad sp create-for-rbac --name "myApp" --role contributor `
        --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} `
        --sdk-auth
    
  6. Kopieer het resulterende JSON-object. U gebruikt het JSON-object om uw geheim te maken in uw GitHub-opslagplaats die uw actie bevat. Het JSON-object moet de volgende kenmerken hebben:

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

Het publicatieprofiel voor de web-app maken

De blade Web-app maken openen

  1. Meld u aan bij uw Azure Stack Hub-portal.
  2. Selecteer Een resource>maken Web + Mobiele>web-app. Een web-app maken in Azure Stack Hub

Uw web-app maken

  1. Selecteer Abonnement.
  2. Een resourcegroep maken of selecteren.
  3. Typ de Naam van uw app. De naam van de app wordt weergegeven in de URL voor uw app, bijvoorbeeld yourappname.appservice.<region>.<FQDN>
  4. Selecteer de runtimestack voor uw app. De runtime moet overeenkomen met de werkstroom die u gebruikt voor uw publicatieprofiel.
  5. Selecteer het besturingssysteem (OS) waarop uw runtime en app worden gehost.
  6. Selecteer of typ de regio voor uw Azure Stack Hub-exemplaar.
  7. Selecteer het plan op basis van uw Azure Stack Hub-exemplaar, regio en app-besturingssysteem.
  8. Selecteer Controleren + maken.
  9. Controleer uw web-app. Selecteer Maken. Web-app controleren in Azure Stack Hub
  10. Selecteer Ga naar resource. Publicatieprofiel ophalen in Azure Stack Hub
  11. Selecteer Publicatieprofiel ophalen. Uw publicatieprofiel wordt gedownload en heet <yourappname>.PublishSettings. Het bestand bevat een XML met de doelwaarden van uw web-app.
  12. Sla uw publicatieprofiel op zodat u het kunt openen wanneer u de geheimen voor uw opslagplaats maakt.

Uw geheimen toevoegen aan de opslagplaats

U kunt GitHub-geheimen gebruiken om gevoelige informatie te versleutelen die u in uw acties kunt gebruiken. U maakt een geheim voor uw service-principal en een ander geheim voor het publicatieprofiel van uw web-app. De actie gebruikt deze om u aan te melden bij uw Azure Stack Hub-exemplaar en uw app te bouwen naar het doel van de web-app.

  1. Open of maak een GitHub-opslagplaats. Als u hulp nodig hebt bij het maken van een opslagplaats in GitHub, vindt u instructies in de GitHub-documenten.
  2. Selecteer Instellingen.
  3. Selecteer Geheimen.
  4. Selecteer Nieuw opslagplaatsgeheim. Uw GitHub Actions geheim toevoegen
  5. Geef uw geheim AZURE_CREDENTIALSde naam .
  6. Plak het JSON-object dat uw service-principal vertegenwoordigt.
  7. Selecteer Geheim toevoegen.
  8. Selecteer Nieuw opslagplaatsgeheim.
  9. Geef uw geheim AZURE_WEBAPP_PUBLISH_PROFILEde naam .
  10. Open uw <yourappname>.PublishSettings in een teksteditor en kopieer en plak de XML in het geheim van de opslagplaats.
  11. Selecteer Geheim toevoegen.

Een runtimewerkstroom toevoegen

  1. Kies een sjabloon in de tabel voor de runtime van uw web-app.

    Runtime Template
    DotNet dotnet.yml
    Node.js node.yml
    Java java_jar.yml
    Java java_war.yml
    Python python.yml
    PHP php.yml
    Docker docker.yml
  2. Plaats de sjabloon GitHub Actions werkstroommap in uw projectopslagplaats: .github/workflows/<runtime.yml> de werkstroommap bevat twee werkstromen.

De implementatieactie van de web-app toevoegen

Maak een tweede werkstroom met behulp van de yaml in deze sectie. In dit voorbeeld implementeert u een Python-web-app. U moet een installatieactie selecteren op basis van uw werkstroom. U vindt verwijzingen voor het instellen van acties voor verschillende runtimes in de tabel , Acties instellen voor verschillende runtimes, na de stappen die zijn gebruikt om de actie te maken.

Voorbeeld van GitHub Actions werkstroom

  1. Open uw GitHub-opslagplaats. Als u uw web-app-toepassingsresources nog niet hebt toegevoegd, voegt u deze nu toe. In dit voorbeeld gebruik ik het voorbeeld Python Flask Hallo wereld en heb ik de bestanden Python .gitignore, app.pyen requirements.txt toegevoegd.

    Exmaple van de opslagplaats met behulp van Python Flask met Azure Stack Hub

  2. Selecteer Acties.

  3. Selecteer Nieuwe werkstroom.

    • Als dit uw eerste werkstroom is, selecteert u Zelf een werkstroom instellen onder Een werkstroomsjabloon kiezen.
    • Als u bestaande werkstromen hebt, selecteert u Nieuwe werkstroom>Zelf een werkstroom instellen.
  4. Geef het bestand workflow.ymlin het pad de naam .

  5. Kopieer en plak de werkstroom 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. Werk in workflow.yaml bij <YOURAPPNAME> met de naam van uw app.

  7. Selecteer Doorvoeren starten.

  8. Voeg de doorvoertitel en optionele details toe en selecteer vervolgens Nieuw bestand doorvoeren.

Acties instellen voor verschillende runtimes

Als u app-code wilt bouwen in een specifieke, op taal gebaseerde omgeving, gebruikt u installatieacties:

Runtime Acties instellen
DotNet DotNet instellen
Node.js Knooppunt instellen
Java Java instellen
Python Python instellen
Docker docker-login

Zodra de aanmeldingsactie is voltooid, kan de volgende set acties in de werkstroom taken uitvoeren zoals het bouwen, taggen en pushen van containers. Zie de documentatie voor de Azure-web-app-actie voor meer informatie.

Uw implementatie activeren

Wanneer de actie wordt uitgevoerd, controleert u of deze is uitgevoerd.

  1. Open uw GitHub-opslagplaats. U kunt de werkstroom activeren door naar de opslagplaats te pushen.
  2. Selecteer Acties.
  3. Selecteer de naam van de doorvoer onder Alle werkstromen. Beide werkstromen hebben hun status geregistreerd. De status van uw GitHub-actie controleren
  4. Selecteer de naam van de taak voor de implementatie, .github/workflows/workflow.yml.
  5. Vouw de secties uit om de retourwaarden voor uw werkstroomacties te bekijken. Zoek de URL voor uw geïmplementeerde web-app. De URL van uw Azure Stack Hub-web-app zoeken
  6. Open een webbrowser en laad de URL.

Volgende stappen