Tutoriel : Utiliser GitHub Actions pour déployer sur App Service et se connecter à une base de données
Découvrez comment configurer un workflow GitHub Actions visant à déployer une application ASP.NET Core avec un back-end Azure SQL Database . Quand vous avez terminé, vous disposez d’une application ASP.NET s’exécutant dans Azure et connectée à SQL Database. Vous allez d’abord utiliser un modèle ARM pour créer des ressources.
Ce tutoriel n’utilise pas de conteneurs. Si vous souhaitez déployer sur une application ASP.NET Core conteneurisée, consultez Utiliser GitHub Actions pour déployer sur App Service pour conteneurs et se connecter à une base de données.
Dans ce tutoriel, vous allez apprendre à :
- Utiliser un workflow GitHub Actions pour ajouter des ressources à Azure à l'aide d'un modèle Azure Resource Manager (modèle ARM)
- Utiliser un workflow GitHub Actions pour créer une application ASP.NET Core
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
Prérequis
Pour suivre ce didacticiel, vous aurez besoin des éléments suivants :
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Un compte GitHub. Si vous n’en avez pas, inscrivez-vous gratuitement.
- Un référentiel GitHub pour stocker vos modèles Resource Manager et vos fichiers de workflow. Pour en créer un, consultez Création d’un référentiel.
Télécharger l’exemple
Dupliquez (fork) l'exemple de projet dans le référentiel Exemples Azure.
https://github.com/Azure-Samples/dotnetcore-sqldb-ghactions
Créer le groupe de ressources
Ouvrez Azure Cloud Shell sur https://shell.azure.com. Vous pouvez également utiliser l'interface de ligne de commande Azure si vous l'avez installée localement. (Pour plus d’informations sur Cloud Shell, consultez Vue d’ensemble de Cloud Shell.)
az group create --name {resource-group-name} --location {resource-group-location}
Générer les informations d’identification du déploiement
OpenID Connect est une méthode d’authentification qui utilise des jetons de courte durée. La configuration d’OpenID Connect avec GitHub Actions est un processus plus complexe qui offre une sécurité renforcée.
Si vous n’avez aucune application existante, inscrivez une nouvelle application Microsoft Entra ID et un principal de service pouvant accéder aux ressources.
az ad app create --display-name myApp
Cette commande affiche une sortie JSON avec un
appId
qui est votreclient-id
. Leid
estAPPLICATION-OBJECT-ID
et il sera utilisé pour créer des informations d’identification fédérées avec des appels d’API Graph. Enregistrez la valeur à utiliser comme secret GitHubAZURE_CLIENT_ID
ultérieurement.Créer un principal de service. Remplacez le
$appID
par l’appID de votre sortie JSON.Cette commande génère une sortie JSON avec un principal de service
id
. Le principal de serviceid
est utilisé comme valeur de l’argument--assignee-object-id
de la commandeaz role assignment create
à l’étape suivante.Copiez le
appOwnerOrganizationId
depuis la sortie JSON à utiliser ultérieurement comme secret GitHub pourAZURE_TENANT_ID
.az ad sp create --id $appId
Créez une attribution de rôle pour votre principal de service. Par défaut, l’attribution de rôle est liée à votre abonnement par défaut. Remplacez
$subscriptionId
par votre ID d’abonnement,$resourceGroupName
par le nom de votre groupe de ressources et$servicePrincipalId
par l’ID du principal de service créé.az role assignment create --role contributor --subscription $subscriptionId --assignee-object-id $servicePrincipalId --assignee-principal-type ServicePrincipal --scope /subscriptions/$subscriptionId/resourceGroups/$resourceGroupName
Exécutez la commande suivante pour créer des informations d’identification à l’identité fédérée pour votre application Microsoft Entra ID.
- Remplacez
APPLICATION-OBJECT-ID
par l’objectId (généré lors de la création de l’application) pour votre application Microsoft Entra ID. - Définissez une valeur pour
CREDENTIAL-NAME
que vous référencerez ultérieurement. - Définissez
subject
. Cette valeur est définie par GitHub en fonction de votre workflow :- Travaux dans votre environnement GitHub Actions :
repo:< Organization/Repository >:environment:< Name >
- Pour les tâches non liées à un environnement, incluez le chemin de référence (ref path) de la branche/étiquette en fonction du chemin de référence utilisé pour déclencher le workflow :
repo:< Organization/Repository >:ref:< ref path>
. Par exemple,repo:n-username/ node_express:ref:refs/heads/my-branch
ourepo:n-username/ node_express:ref:refs/tags/my-tag
. - Pour les workflows déclenchés par un événement de demande de tirage (pull request) :
repo:< Organization/Repository >:pull_request
.
- Travaux dans votre environnement GitHub Actions :
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" ] }
- Remplacez
Pour savoir comment créer une application Active Directory, un principal de service et des informations d’identification fédérées dans le portail Azure, consultez Connecter GitHub et Azure.
Configurer le secret GitHub pour l’authentification
Vous devez fournir l’ID de client, l’ID de locataire et l’ID d’abonnement de votre application à l’action de connexion. Vous pouvez fournir ces valeurs directement dans le workflow ou les stocker dans des secrets GitHub et les référencer dans votre workflow. L’enregistrement des valeurs en tant que secrets GitHub est l’option la plus sécurisée.
Dans GitHub, accédez à votre dépôt.
Sélectionnez Paramètres dans le volet de navigation.
Sélectionnez Sécurité > Secrets et variables > Actions.
Sélectionnez New repository secret (Nouveau secret de dépôt).
Créez des secrets pour
AZURE_CLIENT_ID
,AZURE_TENANT_ID
etAZURE_SUBSCRIPTION_ID
. Utilisez ces valeurs à partir de votre application Microsoft Entra pour vos secrets GitHub :Secret GitHub Application Microsoft Entra AZURE_CLIENT_ID ID d’application (client) AZURE_TENANT_ID ID de l’annuaire (locataire) AZURE_SUBSCRIPTION_ID Identifiant d’abonnement Enregistrez chaque secret en sélectionnant Ajouter un secret.
Ajouter des secrets GitHub pour votre build
Créez deux nouveaux secrets dans votre dépôt GitHub pour
SQLADMIN_PASS
etSQLADMIN_LOGIN
. Veillez à choisir un mot de passe complexe, sinon l’étape de création du serveur de base de données SQL échouera. Enregistrez ce mot de passe séparément car vous n'y aurez plus accès ensuite.Créez un secret
AZURE_SUBSCRIPTION_ID
pour votre ID d’abonnement Azure. Si vous ne connaissez pas votre ID d’abonnement, utilisez cette commande dans le shell Azure pour le trouver. Copiez la valeur dans la colonneSubscriptionId
.az account list -o table
Créer des ressources Azure
Le workflow de création de ressources Azure exécute un modèle ARM pour déployer les ressources vers Azure. Le workflow :
- extrait le code source à l'aide de l'action d'extraction ;
- se connecte à Azure à l'aide de l'action de connexion à Azure et recueille des informations sur l'environnement et les ressources Azure ;
- déploie les ressources à l'aide de l'action de déploiement Azure Resource Manager.
Pour exécuter le workflow de création de ressources Azure :
Ouvrez le fichier
infraworkflow.yml
dans.github/workflows
au sein de votre référentiel.Remplacez la valeur de
AZURE_RESOURCE_GROUP
par le nom de votre groupe de ressources.Définissez l’entrée pour
region
dans vos actions de déploiement ARM pour votre région.- Ouvrez
templates/azuredeploy.resourcegroup.parameters.json
et mettez à jour la propriétérgLocation
avec votre région.
- Ouvrez
Accédez à Actions et sélectionnez Exécuter le workflow.
Vérifiez qu'une coche verte apparaît sur la page Actions pour vous assurer que votre action a bien été exécutée.
Une fois que vous avez créé vos ressources, accédez à Actions, sélectionnez Créer des ressources Azure et désactivez le workflow.
Créer un secret de profil de publication
Dans le portail Azure, ouvrez votre nouvelle instance App Service intermédiaire (emplacement) créé avec le workflow
Create Azure Resources
.Sélectionnez Obtenir le profil de publication.
Ouvrez le fichier de profil de publication dans un éditeur de texte et copiez son contenu.
Créez un nouveau secret GitHub pour
AZURE_WEBAPP_PUBLISH_PROFILE
.
Créer et déployer votre application
Pour exécuter le workflow de création et de déploiement :
Ouvrez votre fichier
workflow.yaml
dans.github/workflows
au sein de votre référentiel.Vérifiez que les variables d’environnement pour
AZURE_RESOURCE_GROUP
,AZURE_WEBAPP_NAME
,SQLSERVER_NAME
etDATABASE_NAME
correspondent à celles dansinfraworkflow.yml
.Vérifiez que votre application a été déployée en visitant l’URL dans le résultat Changez l’emplacement en emplacement de production. Vous devriez voir un exemple d’application, My TodoList App.
Nettoyer les ressources
Si vous n’avez plus besoin de votre exemple de projet, supprimez votre groupe de ressources dans le portail Azure et supprimez votre dépôt sur GitHub.