mise en place d’une pipeline ci/cd pour une application node.js avec github actions et docker
22/09/2025
Introduction
Automatiser la construction, les tests et le déploiement d’une application Node.js permet de gagner en fiabilité et en rapidité. Dans ce tutoriel, vous apprendrez à créer une pipeline CI/CD avec Docker et GitHub Actions. À la clé : livraisons fréquentes, validation automatique et rollback simplifié.
Étapes de mise en place
1. Préparer l’application Node.js
- Initialisez votre projet :
npm init -y npm install express --save
- Ajoutez un script de test simple dans
package.json
:"scripts": { "test": "mocha tests/**/*.spec.js" }
2. Dockeriser l’application
# Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "src/index.js"]
Commande de build et test local :
docker build -t mon-app-node .
docker run -p 3000:3000 mon-app-node
3. Créer le workflow GitHub Actions
name: CI & CD
on:
push:
branches: [ main ]
jobs:
build-test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
- name: Build Docker image
run: docker build -t ${{ github.repository }}:${{ github.sha }} .
- name: Push to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- run: docker push ${{ github.repository }}:${{ github.sha }}
- Déclencheur : chaque push sur
main
. - Secrets GitHub :
DOCKERHUB_USER
etDOCKERHUB_TOKEN
.
4. Déploiement automatique
- Ajoutez un job
deploy
qui déclenche un SSH vers votre serveur ou utilise votre registry cloud (AWS, GCP, Azure). - Exemple d’étape pour VPS :
- name: Deploy via SSH uses: appleboy/ssh-action@v0.1.7 with: host: ${{ secrets.SERVER_HOST }} username: deploy key: ${{ secrets.SERVER_SSH_KEY }} script: | docker pull ${{ github.repository }}:${{ github.sha }} docker stop mon-app || true docker rm mon-app || true docker run -d --name mon-app -p 3000:3000 ${{ github.repository }}:${{ github.sha }}
Bonnes pratiques et optimisations
- Cachez le dossier
~/.npm
pour accélérer les installations (actions/cache@v3
). - Scannez vos images Docker avec
trivy
ouclair
pour détecter les failles. - Séparez les workflows « build-test » et « deploy » pour éviter les redéploiements en cas d’échec des tests.
- Versionnez vos images avec des tags sémantiques (Git tags ou numéro de version).
Conclusion
Grâce à GitHub Actions et Docker, vous disposez désormais d’une pipeline CI/CD robuste pour votre application Node.js. Cette automatisation réduit drastiquement les erreurs humaines et accélère vos mises en production, un atout clé pour tout projet SaaS moderne.
Envie d’un accompagnement sur mesure ou d’une montée en compétences de vos équipes ? Contactez-nous pour en discuter.