Déployer sur App Service à l’aide de GitHub Actions

Prenez en main GitHub Actions pour automatiser votre workflow et le déployer sur Azure App Service à partir de GitHub.

Prérequis

Configurer le déploiement de GitHub Actions lors de la création de l’application

Le déploiement de GitHub Actions est intégré à l’Assistant Création d’application par défaut. Vous devez simplement définir Déploiement continu sur Activer sous l’onglet Déploiement et configurer l’organisation, le référentiel et la branche souhaités.

A screenshot showing how to enable GitHub Actions deployment in the App Service create wizard.

Lorsque vous activez le déploiement continu, l’Assistant Création d’application sélectionne automatiquement la méthode d’authentification en fonction de la sélection d’authentification de base et configure votre application et votre référentiel GitHub en conséquence :

Sélection de l’authentification de base Méthode d'authentification
Désactiver Identité affectée par l’utilisateur (OpenID Connect)
Activer Authentification de base

Remarque

Si vous recevez une erreur lors de la création de votre application indiquant que votre compte Azure ne possède pas certaines autorisations, il se peut qu’il ne dispose pas des autorisations requises pour créer et configurer l’identité affectée par l’utilisateur. Pour obtenir une alternative, consultez Configurer le déploiement de GitHub Actions à partir du Centre de déploiement.

Configurer le déploiement de GitHub Actions à partir du Centre de déploiement

Pour une application existante, vous pouvez commencer rapidement avec GitHub Actions à l’aide du Centre de déploiement App Service. Cette méthode clé en main génère automatiquement un fichier de workflow GitHub Actions basé sur votre pile d’applications et le valide dans votre référentiel GitHub.

Le Centre de déploiement vous permet également de configurer facilement l’authentification OpenID Connect plus sécurisée avec l’option d’identité affectée par l’utilisateur.

Si votre compte Azure dispose des autorisations nécessaires, vous pouvez choisir de créer une identité affectée par l’utilisateur. Sinon, vous pouvez sélectionner une identité managée affectée par l’utilisateur existante dans la liste déroulante Identité. Vous pouvez collaborer avec votre administrateur Azure pour créer une identité managée affectée par l’utilisateur avec le rôle Contributeur de site web.

Pour plus d’informations, consultez Déploiement continu sur Azure App Service.

Configurer manuellement un workflow GitHub Actions

Vous pouvez également déployer un workflow sans utiliser le centre de déploiement.

  1. Générer les informations d’identification du déploiement
  2. Configurer le secret GitHub
  3. Ajouter le fichier de workflow à votre référentiel GitHub

1. Générer les informations d’identification du déploiement

La méthode recommandée pour s’authentifier auprès d’Azure App Services pour GitHub Actions se fait avec une identité managée définie par l’utilisateur, et le moyen le plus simple pour cela consiste plutôt à configurer le déploiement GitHub Actions directement dans le portail et à sélectionner l’identité managée affectée par l’utilisateur.

Remarque

L’authentification à l’aide d’une identité managée affectée par l’utilisateur est actuellement en préversion.

Vous pouvez également vous authentifier auprès d’un principal de service, d’OpenID Connect ou d’un profil de publication.

Remarque

Le profil de publication nécessite l’activation de l’authentification de base.

Un profil de publication est une information d’identification au niveau de l’application. Configurez votre profil de publication en tant que secret GitHub.

  1. Accédez à votre service d’application dans le portail Azure.

  2. Dans la page Vue d’ensemble, sélectionnez Obtenir le profil de publication.

  3. Enregistrez le fichier téléchargé. Vous utiliserez le contenu du fichier pour créer un secret GitHub.

Remarque

À compter d’octobre 2020, les applications web Linux ont besoin que le paramètre d’application WEBSITE_WEBDEPLOY_USE_SCM soit défini sur trueavant de télécharger le profil de publication. Cette condition sera supprimée ultérieurement.

2. Configurer le secret GitHub

Dans GitHub, accédez à votre référentiel. Sélectionnez Paramètres > Sécurité > Secrets et variables > Actions > Nouveau secret de référentiel.

Pour utiliser les informations d’identification au niveau de l’application, collez le contenu du fichier de profil de publication téléchargé dans le champ de valeur du secret. Nommez le secret AZURE_WEBAPP_PUBLISH_PROFILE.

Quand vous configurez votre fichier de workflow GitHub ultérieurement, vous utilisez AZURE_WEBAPP_PUBLISH_PROFILE dans l’action Déployer l’application web Azure. Par exemple :

- uses: azure/webapps-deploy@v2
  with:
    publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}

3. Ajouter le fichier de workflow à votre référentiel GitHub

Un workflow est défini par un fichier YAML (.yml) situé dans le chemin /.github/workflows/ de votre référentiel GitHub. Cette définition contient les étapes et les paramètres qui composent le workflow.

Au minimum, le fichier de workflow inclut les étapes distinctes suivantes :

  1. Authentifiez-vous auprès d’App Service à l’aide du secret GitHub que vous avez créé.
  2. Créez l’application web.
  3. Déployez l’application web.

Pour déployer votre code sur une application App Service, vous utilisez l’action azure/webapps-deploy@v3. L’action nécessite le nom de votre application web dans app-name et, selon votre pile de langage, le chemin d’accès d’un fichier *.zip, *.war ou *.jar, ou d’un dossier à déployer dans package. Pour obtenir la liste complète des entrées possibles pour l’action azure/webapps-deploy@v3, consultez la définition action.yml.

Les exemples suivants illustrent la partie du workflow qui génère l’application web, dans différents langages pris en charge.

L’entrée publish-profile doit faire référence au secret GitHub AZURE_WEBAPP_PUBLISH_PROFILE que vous avez créé précédemment.

name: .NET Core CI

on: [push]

env:
  AZURE_WEBAPP_NAME: my-app-name    # set this to your application's name
  AZURE_WEBAPP_PACKAGE_PATH: '.'      # set this to the path to your web app project, defaults to the repository root
  DOTNET_VERSION: '6.0.x'           # set this to the dot net version to use

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # Checkout the repo
      - uses: actions/checkout@main
      
      # Setup .NET Core SDK
      - name: Setup .NET Core
        uses: actions/setup-dotnet@v3
        with:
          dotnet-version: ${{ env.DOTNET_VERSION }} 
      
      # Run dotnet build and publish
      - name: dotnet build and publish
        run: |
          dotnet restore
          dotnet build --configuration Release
          dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp' 
          
      # Deploy to Azure Web apps
      - name: 'Run Azure webapp deploy action using publish profile credentials'
        uses: azure/webapps-deploy@v3
        with: 
          app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
          publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE  }} # Define secret variable in repository settings as per action documentation
          package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'

Étapes suivantes

Consultez les références sur Azure GitHub Actions et les workflow :