Déploiement continu vers Azure App Service

Azure App Service permet un déploiement continu à partir des dépôts GitHub, Bitbucket et Azure Repos en extrayant les dernières mises à jour.

Notes

La page Centre de développement (classique) dans le portail Azure, une ancienne version de la fonctionnalité de déploiement, est déconseillée depuis mars 2021. Cette modification n’affecte pas les paramètres de déploiement existants dans votre application, et vous pouvez continuer à gérer le déploiement d’applications dans la page Centre de déploiement du portail.

Préparer votre dépôt

Pour obtenir des builds automatiques auprès du serveur de builds Azure App Service, vérifiez que la racine de votre référentiel contient les fichiers appropriés de votre projet.

Runtime Fichiers du répertoire racine
ASP.NET (Windows uniquement) *.sln, *.csproj ou default.aspx
ASP.NET Core *.sln ou *.csproj
PHP index.php
Ruby (Linux uniquement) Gemfile
Node.js server.js, app.js ou package.json avec un script de démarrage
Python *.py, requirements.txt ou runtime.txt
HTML default.htm, default.html, default.asp, index.htm, index.html ou iisstart.htm
WebJobs <job_name>/run.<extension> sous App_Data/jobs/continuous pour les WebJobs continus, ou App_Data/jobs/triggered pour les WebJobs déclenchés. Pour plus d’informations, consultez la documentation Kudu relative aux WebJobs.
Fonctions Consultez Déploiement continu pour Azure Functions.

Pour personnaliser votre déploiement, vous pouvez inclure un fichier .deployment dans la racine du dépôt. Pour plus d’informations, consultez Personnaliser les déploiements et Personnaliser un script de déploiement.

Notes

Si vous utilisez dans Visual Studio, laissez Visual Studio vous créer un référentiel. Votre projet sera immédiatement prêt pour le déploiement via Git.

Configurer la source de déploiement

  1. Dans le portail Azure, accédez à la page de gestion de votre application App Service.

  2. Dans le volet gauche, sélectionnez Centre de déploiement. Sélectionnez ensuite Paramètres.

  3. Dans la zone Source, sélectionnez l’une des options CI/CD :

    Capture d’écran montrant comment choisir la source de déploiement.

Sélectionnez l’onglet qui correspond à votre fournisseur de build pour continuer.

  1. GitHub Actions correspond au fournisseur de build par défaut. Pour changer le fournisseur, sélectionnez Changer de fournisseur>Service de build App Service (Kudu) >OK.

    Notes

    Pour utiliser Azure Pipelines comme fournisseur de build pour votre application App Service, configurez CI/CD directement à partir d’Azure Pipelines. Ne le configurez pas dans App Service. L’option Azure Pipelines permet de simplement pointer dans la bonne direction.

  2. La première fois que vous effectuez un déploiement à partir de GitHub, sélectionnez Autoriser et suivez les invites d’autorisation. Si vous souhaitez effectuer un déploiement à partir d’un autre dépôt d’utilisateur, sélectionnez Changer de compte.

  3. Après avoir autorisé votre compte Azure avec GitHub, sélectionnez l’organisation, le dépôt et la branche pour lesquels configurer CI/CD. Si vous ne trouvez pas d’organisation ni de dépôt, vous avez peut-être besoin d’activer des autorisations supplémentaires sur GitHub. Pour plus d’informations, consultez Gestion de l’accès aux dépôts de votre organisation.

  4. Quand GitHub Actions est sélectionné en tant que fournisseur de build, vous pouvez sélectionner le fichier de workflow de votre choix à l’aide des listes déroulantes Pile d’exécution et Version. Azure valide ce fichier de workflow dans le dépôt GitHub sélectionné afin de gérer les tâches de génération et de déploiement. Pour afficher le fichier avant d’enregistrer vos modifications, sélectionnez Aperçu du fichier.

    Notes

    App Service détecte le paramètre de pile de langage de votre application et sélectionne le modèle de workflow le plus approprié. Si vous choisissez un autre modèle, il peut déployer une application qui ne s’exécute pas correctement. Pour plus d’informations, consultez Fonctionnement du fournisseur de build GitHub Actions.

  5. Sélectionnez Enregistrer.

    Les nouvelles validations correspondant au dépôt et à la branche sélectionnés sont déployées en continu dans votre application App Service. Vous pouvez suivre les validations et les déploiements sous l’onglet Journaux.

Désactiver le déploiement continu

  1. Dans le portail Azure, accédez à la page de gestion de votre application App Service.

  2. Dans le volet gauche, sélectionnez Centre de déploiement. Ensuite, sélectionnez Paramètres>Déconnecter :

    Capture d’écran montrant comment déconnecter la synchronisation de votre dossier cloud avec votre application App Service dans le portail Azure

  3. Par défaut, le fichier de workflow GitHub Actions est conservé dans votre référentiel, mais continue de déclencher le déploiement vers votre application. Pour supprimer ce fichier de votre dépôt, sélectionnez Supprimer le fichier de workflow.

  4. Sélectionnez OK.

Que se passe-t-il au niveau de mon application pendant le déploiement ?

Toutes les méthodes de déploiement officiellement prises en charge apportent des modifications aux fichiers dans le dossier /home/site/wwwroot de votre application. Ces fichiers sont utilisés pour exécuter votre application. Par conséquent, le déploiement peut échouer si des fichiers sont verrouillés. L’application peut également se comporter de façon imprévisible pendant le déploiement, car tous les fichiers ne sont pas tous mis à jour en même temps. Cela n’est pas souhaitable pour une application faisant face au client. Il existe différentes manières d’éviter ces problèmes :

Fonctionnement du fournisseur de build GitHub Actions

Le fournisseur de build GitHub Actions est une option pour CI/CD à partir de GitHub. Il effectue les actions suivantes pour configurer CI/CD :

  • Dépose un fichier de workflow GitHub Actions dans votre référentiel GitHub pour gérer les tâches de génération et de déploiement vers App Service.
  • Ajoute le profil de publication de votre application en tant que secret GitHub. Le fichier de workflow utilise ce secret pour s’authentifier auprès d’App Service.
  • Capture des informations à partir des journaux d’exécution de workflow et les affiche sous l’onglet Journaux dans le Centre de déploiement de votre application.

Vous pouvez personnaliser le fournisseur de build GitHub Actions comme suit :

  • Personnalisez le fichier de workflow après qu’il a été généré dans votre référentiel GitHub. Pour plus d’informations, consultez Syntaxe de workflow pour GitHub Actions. Assurez-vous que le workflow est déployé dans App Service avec l’action azure/webapps-deploy.
  • Si la branche sélectionnée est protégée, vous pouvez toujours afficher un aperçu du fichier de workflow sans enregistrer la configuration, puis l’ajouter manuellement dans votre dépôt. Cette méthode ne permet pas l’intégration des journaux avec le portail Azure.
  • Au lieu d’utiliser un profil de publication, effectuez le déploiement à l’aide d’un principal de service dans Azure Active Directory.

S’authentifier avec un principal de service

Cette configuration facultative remplace l’authentification par défaut par les profils de publication dans le fichier de workflow généré.

  1. Générez un principal de service en utilisant la commande az ad sp create-for-rbac dans l’interface Azure CLI. Dans l’exemple suivant, remplacez <subscription-id>, <group-name> et <app-name> par vos propres valeurs :

    az ad sp create-for-rbac --name "myAppDeployAuth" --role contributor \
                                --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name> \
                                --sdk-auth
    

    Important

    Pour des raisons de sécurité, accordez l’accès minimal requis au principal du service. L’étendue dans l’exemple précédent est limitée à l’application App Service spécifique, et non à l’ensemble du groupe de ressources.

  2. Enregistrez l’intégralité de la sortie JSON pour l’étape suivante, y compris le niveau supérieur {}.

  3. Dans GitHub, dans votre dépôt, sélectionnez Paramètres>Secrets>Ajouter un nouveau secret.

  4. Collez l’intégralité de la sortie JSON de la commande Azure CLI dans le champ de valeur du secret. Nommez le secret comme AZURE_CREDENTIALS.

  5. Dans le fichier de workflow généré par le Centre de déploiement, modifiez l’étape azure/webapps-deploy pour qu’elle ressemble à l’exemple suivant (qui est modifié à partir d’un fichier de workflow Node.js) :

    - name: Sign in to Azure 
    # Use the GitHub secret you added.
    - uses: azure/login@v1
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}
    - name: Deploy to Azure Web App
    # Remove publish-profile.
    - uses: azure/webapps-deploy@v2
      with:
        app-name: '<app-name>'
        slot-name: 'production'
        package: .
    - name: Sign out of Azure.
      run: |
        az logout
    

Déployer à partir d’autres référentiels

Pour les applications Windows, vous pouvez configurer manuellement le déploiement continu à partir d’un dépôt cloud Git ou Mercurial que le portail ne prend pas directement en charge, comme GitLab. Pour ce faire, vous devez sélectionner Git externe dans la liste déroulante Source. Pour plus d’informations, consultez Configurer le déploiement continu avec des étapes manuelles.

Plus de ressources