Partager via


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 :

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.

  1. 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 votre client-id. Le id est APPLICATION-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 GitHub AZURE_CLIENT_ID ultérieurement.

  2. 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 service id est utilisé comme valeur de l’argument --assignee-object-id de la commande az role assignment create à l’étape suivante.

    Copiez le appOwnerOrganizationId depuis la sortie JSON à utiliser ultérieurement comme secret GitHub pour AZURE_TENANT_ID.

     az ad sp create --id $appId
    
  3. 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
    
  4. 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 ou repo: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.
    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"
        ]
    }
    

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.

  1. Dans GitHub, accédez à votre dépôt.

  2. Sélectionnez Paramètres dans le volet de navigation.

  3. Sélectionnez Sécurité > Secrets et variables > Actions.

    Capture d’écran de l’ajout d’un secret

  4. Sélectionnez New repository secret (Nouveau secret de dépôt).

  5. Créez des secrets pour AZURE_CLIENT_ID, AZURE_TENANT_ID et AZURE_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
  6. Enregistrez chaque secret en sélectionnant Ajouter un secret.

Ajouter des secrets GitHub pour votre build

  1. Créez deux nouveaux secrets dans votre dépôt GitHub pour SQLADMIN_PASS et SQLADMIN_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.

  2. 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 colonne SubscriptionId.

    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 :

Pour exécuter le workflow de création de ressources Azure :

  1. Ouvrez le fichier infraworkflow.yml dans .github/workflows au sein de votre référentiel.

  2. Remplacez la valeur de AZURE_RESOURCE_GROUP par le nom de votre groupe de ressources.

  3. Définissez l’entrée pour region dans vos actions de déploiement ARM pour votre région.

    1. Ouvrez templates/azuredeploy.resourcegroup.parameters.json et mettez à jour la propriété rgLocation avec votre région.
  4. Accédez à Actions et sélectionnez Exécuter le workflow.

    Exécutez le workflow GitHub Actions permettant d'ajouter les ressources.

  5. Vérifiez qu'une coche verte apparaît sur la page Actions pour vous assurer que votre action a bien été exécutée.

    Exécution réussie de la création des ressources.

  6. Une fois que vous avez créé vos ressources, accédez à Actions, sélectionnez Créer des ressources Azure et désactivez le workflow.

    Désactiver le workflow Créer des ressources Azure.

Créer un secret de profil de publication

  1. Dans le portail Azure, ouvrez votre nouvelle instance App Service intermédiaire (emplacement) créé avec le workflow Create Azure Resources.

  2. Sélectionnez Obtenir le profil de publication.

  3. Ouvrez le fichier de profil de publication dans un éditeur de texte et copiez son contenu.

  4. 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 :

  1. Ouvrez votre fichier workflow.yaml dans .github/workflows au sein de votre référentiel.

  2. Vérifiez que les variables d’environnement pour AZURE_RESOURCE_GROUP, AZURE_WEBAPP_NAME, SQLSERVER_NAME et DATABASE_NAME correspondent à celles dans infraworkflow.yml.

  3. 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.

Étapes suivantes