Delen via


Zelfstudie: GitHub Actions gebruiken om te implementeren in App Service en verbinding te maken met een database

Meer informatie over het instellen van een GitHub Actions-werkstroom voor het implementeren van een ASP.NET Core-toepassing met een Back-end van Azure SQL Database . Wanneer u klaar bent, hebt u een ASP.NET-app die wordt uitgevoerd in Azure en is verbonden met SQL Database. U gebruikt eerst een ARM-sjabloon om resources te maken.

In deze zelfstudie worden geen containers gebruikt. Als u wilt implementeren in een container ASP.NET Core-toepassing, raadpleegt u GitHub Actions gebruiken om te implementeren in App Service for Containers en verbinding te maken met een database.

In deze zelfstudie leert u het volgende:

  • Een GitHub Actions-werkstroom gebruiken om resources toe te voegen aan Azure met een Azure Resource Manager-sjabloon (ARM-sjabloon)
  • Een GitHub Actions-werkstroom gebruiken om een ASP.NET Core-toepassing te bouwen

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Vereisten

Voor het voltooien van deze zelfstudie hebt u het volgende nodig:

  • Een Azure-account met een actief abonnement. Gratis een account maken
  • Een GitHub-account. Als u geen account hebt, kunt u zich registreren voor een gratis account.
    • Een GitHub-opslagplaats voor het opslaan van uw Resource Manager-sjablonen en uw werkstroombestanden. Zie Een nieuwe opslagplaats maken om er een te maken.

Het voorbeeld downloaden

Fork het voorbeeldproject in de opslagplaats Azure Samples.

https://github.com/Azure-Samples/dotnetcore-sqldb-ghactions

De resourcegroep maken

Open de Azure Cloud Shell op https://shell.azure.com. U kunt de Azure CLI ook gebruiken als u deze lokaal hebt geïnstalleerd. (Zie voor meer informatie over Cloud Shell de Overzicht van Cloud Shell.)

az group create --name {resource-group-name} --location {resource-group-location}

Genereer implementatiereferenties

OpenID Connect is een verificatiemethode die gebruikmaakt van kortstondige tokens. Het instellen van OpenID Connect met GitHub Actions is complexer en biedt beperkte beveiliging.

  1. Als u geen bestaande toepassing hebt, registreert u een nieuwe Microsoft Entra ID-toepassing en service-principal die toegang heeft tot resources.

    az ad app create --display-name myApp
    

    Met deze opdracht wordt JSON uitgevoerd met een appId JSON die uw client-id. Dit id wordt APPLICATION-OBJECT-ID gebruikt voor het maken van federatieve referenties met Graph API-aanroepen. Sla de waarde op die u later wilt gebruiken als het AZURE_CLIENT_ID GitHub-geheim.

  2. Een service-principal maken. Vervang de door de $appID appId uit uw JSON-uitvoer.

    Met deze opdracht wordt JSON-uitvoer gegenereerd met een service-principal id. De service-principal id wordt gebruikt als de waarde van het --assignee-object-id argument in de az role assignment create opdracht in de volgende stap.

    Kopieer de appOwnerOrganizationId uitvoer van de JSON om te gebruiken als een GitHub-geheim voor AZURE_TENANT_ID later gebruik.

     az ad sp create --id $appId
    
  3. Maak een nieuwe roltoewijzing voor uw service-principal. De roltoewijzing wordt standaard gekoppeld aan uw standaardabonnement. Vervang $subscriptionId door uw abonnements-id, $resourceGroupName door de naam van de resourcegroep en $servicePrincipalId door de zojuist gemaakte service-principal-id.

    az role assignment create --role contributor --subscription $subscriptionId --assignee-object-id  $servicePrincipalId --assignee-principal-type ServicePrincipal --scope /subscriptions/$subscriptionId/resourceGroups/$resourceGroupName
    
  4. Voer de volgende opdracht uit om een nieuwe federatieve identiteitsreferentie te maken voor uw Microsoft Entra ID-toepassing.

    • Vervang door APPLICATION-OBJECT-ID de objectId (gegenereerd tijdens het maken van een app) voor uw Microsoft Entra ID-toepassing.
    • Stel een waarde in om CREDENTIAL-NAME later te verwijzen.
    • Stel de subject in. De waarde hiervan wordt gedefinieerd door GitHub, afhankelijk van uw werkstroom:
      • Taken in uw GitHub Actions-omgeving: repo:< Organization/Repository >:environment:< Name >
      • Voor taken die niet zijn gekoppeld aan een omgeving, moet u het referentiepad voor vertakkingen/tags opnemen op basis van het referentiepad dat wordt gebruikt voor het activeren van de werkstroom: repo:< Organization/Repository >:ref:< ref path>. Bijvoorbeeld repo:n-username/ node_express:ref:refs/heads/my-branch of repo:n-username/ node_express:ref:refs/tags/my-tag.
      • Voor werkstromen die door een pull-aanvraaggebeurtenis zijn geactiveerd: repo:< Organization/Repository >:pull_request.
    az ad app federated-credential create --id <APPLICATION-OBJECT-ID> --parameters credential.json
    ("credential.json" contains the following content)
    {
        "name": "<CREDENTIAL-NAME>",
        "issuer": "https://token.actions.githubusercontent.com",
        "subject": "repo:octo-org/octo-repo:environment:Production",
        "description": "Testing",
        "audiences": [
            "api://AzureADTokenExchange"
        ]
    }
    

Zie Connect GitHub en Azure voor meer informatie over het maken van een Active Directory-toepassing, service-principal en federatieve referenties in Azure Portal.

Het GitHub-geheim configureren voor verificatie

U moet de client-id, tenant-id en abonnements-id van uw toepassing opgeven voor de aanmeldingsactie. Deze waarden kunnen rechtstreeks in de werkstroom worden opgegeven of kunnen worden opgeslagen in GitHub-geheimen en waarnaar wordt verwezen in uw werkstroom. Het opslaan van de waarden als GitHub-geheimen is de veiligere optie.

  1. Ga in GitHub naar uw opslagplaats.

  2. Ga naar Instellingen in het navigatiemenu.

  3. Selecteer Acties voor beveiligingsgeheimen > en variabelen>.

    Schermopname van het toevoegen van een geheim

  4. Selecteer Nieuw opslagplaatsgeheim.

  5. Geheimen maken voor AZURE_CLIENT_ID, AZURE_TENANT_IDen AZURE_SUBSCRIPTION_ID. Gebruik deze waarden uit uw Microsoft Entra-toepassing voor uw GitHub-geheimen:

    GitHub-geheim Microsoft Entra-toepassing
    AZURE_CLIENT_ID Client-id van toepassing
    AZURE_TENANT_ID Id van directory (tenant)
    AZURE_SUBSCRIPTION_ID Abonnements-id
  6. Sla elk geheim op door Geheim toevoegen te selecteren.

GitHub-geheimen toevoegen voor uw build

  1. Maak twee nieuwe geheimen in uw GitHub-opslagplaats voor SQLADMIN_PASS en SQLADMIN_LOGIN. Zorg ervoor dat u een complex wachtwoord kiest, anders mislukt de stap voor het maken van de SQL-databaseserver. U hebt geen toegang meer tot dit wachtwoord, dus sla het wachtwoord afzonderlijk op.

  2. Maak een AZURE_SUBSCRIPTION_ID geheim voor uw Azure-abonnements-id. Als u uw abonnements-id niet weet, gebruikt u deze opdracht in De Azure Shell om deze te vinden. Kopieer de waarde in de SubscriptionId kolom.

    az account list -o table
    

Azure-resources maken

Met de werkstroom Azure-resources maken wordt een ARM-sjabloon uitgevoerd om resources in Azure te implementeren. De werkstroom:

Ga als volgende te werk om de werkstroom Azure-resources maken uit te voeren:

  1. Open het infraworkflow.yml bestand in .github/workflows uw opslagplaats.

  2. Werk de waarde van AZURE_RESOURCE_GROUP uw resourcegroepnaam bij.

  3. Stel de invoer voor region in uw ARM-implementatieacties in uw regio.

    1. Open de eigenschap en werk templates/azuredeploy.resourcegroup.parameters.json deze rgLocation bij naar uw regio.
  4. Ga naar Acties en selecteer Werkstroom uitvoeren.

    Voer de GitHub Actions-werkstroom uit om resources toe te voegen.

  5. Controleer of uw actie is uitgevoerd door te controleren op een groen vinkje op de pagina Acties .

    Geslaagde uitvoering van het maken van resources.

  6. Nadat u uw resources hebt gemaakt, gaat u naar Acties, selecteert u Azure-resources maken en schakelt u de werkstroom uit.

    Schakel de werkstroom Azure-resources maken uit.

Een publicatieprofielgeheim maken

  1. Open in Azure Portal uw nieuwe faserings-App Service (Site) die is gemaakt met de Create Azure Resources werkstroom.

  2. Selecteer Publicatieprofiel ophalen.

  3. Open het publicatieprofielbestand in een teksteditor en kopieer de inhoud ervan.

  4. Maak een nieuw GitHub-geheim voor AZURE_WEBAPP_PUBLISH_PROFILE.

Uw app bouwen en implementeren

De build- en implementatiewerkstroom uitvoeren:

  1. Open het workflow.yaml bestand in .github/workflows uw opslagplaats.

  2. Controleer of de omgevingsvariabelen voor AZURE_RESOURCE_GROUP, AZURE_WEBAPP_NAMEen DATABASE_NAME SQLSERVER_NAMEovereenkomen met de omgevingsvariabelen in infraworkflow.yml.

  3. Controleer of uw app is geïmplementeerd door naar de URL in de uitvoer van de productiesite te gaan. U ziet nu een voorbeeld-app, Mijn todoList-app.

Resources opschonen

Als u uw voorbeeldproject niet meer nodig hebt, verwijdert u uw resourcegroep in Azure Portal en verwijdert u uw opslagplaats op GitHub.

Volgende stappen