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.
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 uwclient-id
. Ditid
wordtAPPLICATION-OBJECT-ID
gebruikt voor het maken van federatieve referenties met Graph API-aanroepen. Sla de waarde op die u later wilt gebruiken als hetAZURE_CLIENT_ID
GitHub-geheim.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-principalid
wordt gebruikt als de waarde van het--assignee-object-id
argument in deaz role assignment create
opdracht in de volgende stap.Kopieer de
appOwnerOrganizationId
uitvoer van de JSON om te gebruiken als een GitHub-geheim voorAZURE_TENANT_ID
later gebruik.az ad sp create --id $appId
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
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>
. Bijvoorbeeldrepo:n-username/ node_express:ref:refs/heads/my-branch
ofrepo:n-username/ node_express:ref:refs/tags/my-tag
. - Voor werkstromen die door een pull-aanvraaggebeurtenis zijn geactiveerd:
repo:< Organization/Repository >:pull_request
.
- Taken in uw GitHub Actions-omgeving:
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" ] }
- Vervang door
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.
Ga in GitHub naar uw opslagplaats.
Ga naar Instellingen in het navigatiemenu.
Selecteer Acties voor beveiligingsgeheimen > en variabelen>.
Selecteer Nieuw opslagplaatsgeheim.
Geheimen maken voor
AZURE_CLIENT_ID
,AZURE_TENANT_ID
enAZURE_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 Sla elk geheim op door Geheim toevoegen te selecteren.
GitHub-geheimen toevoegen voor uw build
Maak twee nieuwe geheimen in uw GitHub-opslagplaats voor
SQLADMIN_PASS
enSQLADMIN_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.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 deSubscriptionId
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:
- Hiermee wordt de broncode uitgecheckt met de actie Uitchecken.
- Meld u aan bij Azure met de azure-aanmeldingsactie en verzamelt omgevings- en Azure-resourcegegevens.
- Hiermee worden resources geïmplementeerd met de azure Resource Manager-implementatieactie.
Ga als volgende te werk om de werkstroom Azure-resources maken uit te voeren:
Open het
infraworkflow.yml
bestand in.github/workflows
uw opslagplaats.Werk de waarde van
AZURE_RESOURCE_GROUP
uw resourcegroepnaam bij.Stel de invoer voor
region
in uw ARM-implementatieacties in uw regio.- Open de eigenschap en werk
templates/azuredeploy.resourcegroup.parameters.json
dezergLocation
bij naar uw regio.
- Open de eigenschap en werk
Ga naar Acties en selecteer Werkstroom uitvoeren.
Controleer of uw actie is uitgevoerd door te controleren op een groen vinkje op de pagina Acties .
Nadat u uw resources hebt gemaakt, gaat u naar Acties, selecteert u Azure-resources maken en schakelt u de werkstroom uit.
Een publicatieprofielgeheim maken
Open in Azure Portal uw nieuwe faserings-App Service (Site) die is gemaakt met de
Create Azure Resources
werkstroom.Selecteer Publicatieprofiel ophalen.
Open het publicatieprofielbestand in een teksteditor en kopieer de inhoud ervan.
Maak een nieuw GitHub-geheim voor
AZURE_WEBAPP_PUBLISH_PROFILE
.
Uw app bouwen en implementeren
De build- en implementatiewerkstroom uitvoeren:
Open het
workflow.yaml
bestand in.github/workflows
uw opslagplaats.Controleer of de omgevingsvariabelen voor
AZURE_RESOURCE_GROUP
,AZURE_WEBAPP_NAME
enDATABASE_NAME
SQLSERVER_NAME
overeenkomen met de omgevingsvariabelen ininfraworkflow.yml
.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.