Skip to main content

Déploiement de Node.js sur Azure App Service

Découvrez comment déployer un projet Node.js sur Azure App Service dans le cadre de vos flux de travail de déploiement continu (CD).

Prérequis

Avant de créer votre workflow GitHub Actions, vous devez suivre les étapes de configuration suivantes :

  1. Créer un plan Azure App Service.

    Par exemple, vous pouvez utiliser Azure CLI pour créer un plan App Service :

    Bash
    az appservice plan create \
       --resource-group MY_RESOURCE_GROUP \
       --name MY_APP_SERVICE_PLAN \
       --is-linux
    

    Dans la commande ci-dessus, remplacez MY_RESOURCE_GROUP par votre groupe de ressources Azure préexistant et MY_APP_SERVICE_PLAN par un nouveau nom pour le plan App Service.

    Pour plus d’informations sur l’utilisation d’Azure CLI, consultez la documentation Azure :

  2. Créez une application web.

    Par exemple, vous pouvez utiliser Azure CLI pour créer une application web Azure App Service avec un runtime Node.js :

    Bash
    az webapp create \
        --name MY_WEBAPP_NAME \
        --plan MY_APP_SERVICE_PLAN \
        --resource-group MY_RESOURCE_GROUP \
        --runtime "NODE|14-lts"
    

    Dans la commande ci-dessus, remplacez les paramĂštres par vos propres valeurs, oĂč MY_WEBAPP_NAME correspond Ă  un nouveau nom de l’application web.

  3. Configurez un profil de publication Azure, et créez un secret AZURE_WEBAPP_PUBLISH_PROFILE.

    GĂ©nĂ©rez vos informations d’identification de dĂ©ploiement Azure Ă  l’aide d’un profil de publication. Pour plus d’informations, consultez GĂ©nĂ©rer les informations d’identification du dĂ©ploiement dans la documentation Azure.

    Dans votre dĂ©pĂŽt GitHub, crĂ©ez un secret nommĂ© AZURE_WEBAPP_PUBLISH_PROFILE, qui contient le profil de publication. Pour plus d’informations sur la crĂ©ation de secrets, consultez Utilisation de secrets dans GitHub Actions.

  4. Si vous le souhaitez, configurez un environnement de dĂ©ploiement. Les environnements sont utilisĂ©s pour dĂ©crire une cible de dĂ©ploiement gĂ©nĂ©ral comme production, staging ou development. Quand un workflow GitHub Actions est dĂ©ployĂ© dans un environnement, l’environnement s’affiche dans la page principale du dĂ©pĂŽt. Vous pouvez utiliser les environnements pour exiger l’approbation d’un travail, restreindre les branches pouvant dĂ©clencher un flux de travail, contrĂŽler les dĂ©ploiements avec des rĂšgles personnalisĂ©es de protection des dĂ©ploiements ou limiter l’accĂšs aux secrets. Pour plus d’informations sur la crĂ©ation d’environnements, consultez Gestion des environnements pour le dĂ©ploiement.

Création du workflow

Une fois les conditions préalables remplies, vous pouvez procéder à la création du workflow.

L’exemple de workflow suivant montre comment crĂ©er, tester et dĂ©ployer le projet Node.js sur Azure App Service lorsqu’il existe une poussĂ©e (push) vers la branche main.

Veillez Ă  dĂ©finir le paramĂštre AZURE_WEBAPP_NAME de la clĂ© env du workflow sur le nom de l’application web que vous avez créée. Si le chemin d’accĂšs Ă  votre projet n’est pas la racine du dĂ©pĂŽt, remplacez AZURE_WEBAPP_PACKAGE_PATH par le chemin d’accĂšs de votre projet. Si vous utilisez une version de Node.js autre que 10.x, remplacez NODE_VERSION par la version que vous utilisez.

Si vous avez configurĂ© un environnement de dĂ©ploiement, remplacez la valeur environment par le nom de votre environnement. Si vous n’avez pas configurĂ© d’environnement ou si votre workflow se trouve dans un rĂ©fĂ©rentiel privĂ© et que vous n’utilisez pas GitHub Enterprise Cloud, supprimez la clĂ© environment.

YAML
# Ce workflow utilise des actions qui ne sont pas certifiées par GitHub.
# Elles sont fournies par un tiers et régies par
# des conditions d’utilisation du service, une politique de confidentialitĂ© et un support distincts.
# documentation en ligne.

# GitHub recommande d’épingler les actions Ă  un SHA de commit.
# Pour obtenir une version plus récente, vous devez mettre à jour le SHA.
# Vous pouvez Ă©galement rĂ©fĂ©rencer une balise ou une branche, mais l’action peut changer sans avertissement.

on:
  push:
    branches:
      - main

env:
  AZURE_WEBAPP_NAME: MY_WEBAPP_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
  NODE_VERSION: '14.x'                # set this to the node version to use

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v5

    - name: Set up Node.js
      uses: actions/setup-node@v4
      with:
        node-version: ${{ env.NODE_VERSION }}
        cache: 'npm'

    - name: npm install, build, and test
      run: |
        npm install
        npm run build --if-present
        npm run test --if-present
    - name: Upload artifact for deployment job
      uses: actions/upload-artifact@v4
      with:
        name: node-app
        path: .

  deploy:
    runs-on: ubuntu-latest
    needs: build
    environment:
      name: 'production'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}

    steps:
    - name: Download artifact from build job
      uses: actions/download-artifact@v5
      with:
        name: node-app

    - name: 'Deploy to Azure WebApp'
      id: deploy-to-webapp
      uses: azure/webapps-deploy@85270a1854658d167ab239bce43949edb336fa7c
      with:
        app-name: ${{ env.AZURE_WEBAPP_NAME }}
        publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
        package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}

Pour aller plus loin