Basalt Studio logo
Basalt Studio.Basalt Studio.
Back

Comment configurer un pipeline CI/CD no-code avec GitHub et TravisCI

Eliott Ardisson

Eliott Ardisson

Founder & CEO - Basalt Studio

Updated
tutorials

Comment automatiser vos déploiements avec un pipeline CI/CD GitHub et TravisCI : étapes concrètes, erreurs à éviter et bonnes pratiques pour équipes tech.

ai agents
automation
programmatic

Points clés

  • Un pipeline CI/CD bien configuré automatise les tests et les déploiements, ce qui réduit les interventions manuelles répétitives et les erreurs qui en découlent.
  • GitHub Actions offre une intégration native avec GitHub et constitue aujourd’hui le point d’entrée le plus direct pour les équipes qui débutent avec l’automatisation CI/CD.
  • TravisCI reste une alternative solide, notamment pour les équipes déjà organisées autour d’un fichier YAML de configuration externe.
  • La mise en place d’un pipeline fonctionnel peut se faire en quelques heures, mais la vraie valeur vient de la discipline autour de la structure de branches, des tests et du monitoring post-déploiement.
  • Les erreurs les plus coûteuses ne viennent pas du pipeline lui-même, mais de ce qu’on oublie de configurer : rollback, gestion des secrets, tests d’intégration, alertes.

Si vous gérez une équipe de développement, même petite, vous avez probablement déjà vécu ce scénario : une mise en production faite à la main un vendredi soir, un bug introduit par inadvertance, et deux heures perdues à diagnostiquer. Un pipeline CI/CD résout ce problème structurellement. Ce guide explique comment en mettre un en place avec GitHub et TravisCI, en partant de zéro, sans supposer une expertise DevOps avancée.

Ce que signifient CI et CD concrètement

Avant de rentrer dans la configuration, il vaut la peine de poser des définitions claires.

L’intégration continue (CI) désigne le processus par lequel chaque modification de code poussée sur le référentiel déclenche automatiquement une suite de vérifications : compilation, tests unitaires, analyse statique. L’objectif est de détecter les problèmes au moment où ils sont introduits, pas trois semaines plus tard lors d’une fusion de branche.

Le déploiement continu (CD) va plus loin : une fois que le code a passé tous les tests, il est automatiquement déployé vers un environnement cible, qu’il s’agisse d’un serveur de staging ou de production. Certaines équipes font la distinction entre continuous delivery (le déploiement est prêt mais déclenché manuellement) et continuous deployment (entièrement automatisé). Pour les PME qui débutent, commencer par le delivery est souvent plus prudent.

Un fichier YAML de configuration est le document texte qui décrit les étapes du pipeline : quand il se déclenche, quels environnements utiliser, quels scripts exécuter. C’est le cœur de la configuration, que vous utilisiez TravisCI ou GitHub Actions.

GitHub Actions est le système d’automatisation natif de GitHub, basé sur des fichiers YAML stockés dans .github/workflows/. Il peut gérer aussi bien la CI que le CD.

TravisCI est un service d’intégration continue indépendant, historiquement populaire dans l’écosystème open source, configuré via un fichier .travis.yml à la racine du projet.

Pourquoi l’automatisation CI/CD est pertinente même pour les petites équipes

On associe souvent les pipelines CI/CD aux grandes organisations tech avec des dizaines de développeurs. C’est une erreur de cadrage. Une équipe de trois personnes qui déploie manuellement plusieurs fois par semaine a autant à gagner qu’une équipe de vingt, proportionnellement à sa taille.

Les recherches de groupes comme McKinsey et DORA (DevOps Research and Assessment) montrent de façon cohérente que les équipes qui pratiquent l’intégration continue et le déploiement automatisé déploient plus fréquemment, avec des délais de rétablissement après incident nettement plus courts. Ce n’est pas un avantage réservé aux grandes structures.

Pour une PME, les bénéfices concrets sont simples : moins de temps passé sur des tâches répétitives à faible valeur, moins de stress autour des mises en production, et une meilleure traçabilité des changements. Chaque déploiement devient un événement documenté, reproductible, réversible.

Étape 1 : Structurer votre référentiel GitHub

La qualité d’un pipeline CI/CD dépend en grande partie de la discipline autour de la structure des branches. Avant de configurer quoi que ce soit, posez cette base.

Une organisation classique pour une PME :

  • main : branche de production, toujours stable et déployable
  • develop : branche d’intégration, reçoit les fonctionnalités terminées
  • branches de fonctionnalité (feature/nom-de-la-feature) : de courte durée, fusionnées régulièrement

Ensuite, configurez les règles de protection de branche sur main dans les paramètres GitHub (Settings > Branches > Add rule). Exigez au minimum :

  • Au moins une revue de pull request avant fusion
  • Le passage des vérifications de statut CI
  • La mise à jour de la branche avant fusion

Ces règles ne ralentissent pas le développement. Elles évitent les rollbacks d’urgence qui, eux, coûtent réellement du temps.

Point d’attention : Les branches de fonctionnalité qui durent plusieurs semaines créent des divergences difficiles à réconcilier. Intégrez fréquemment, idéalement tous les jours ou tous les deux jours.

Étape 2 : Configurer TravisCI

Rendez-vous sur travis-ci.com, connectez-vous avec votre compte GitHub, et activez TravisCI pour le référentiel concerné. L’interface permet de le faire sans écrire une seule ligne de code.

Créez ensuite un fichier .travis.yml à la racine de votre projet. Voici une configuration de base pour un projet Node.js :

language: node_js
node_js:
  - "18"
  - "20"

cache: npm

script:
  - npm ci
  - npm test
  - npm run build

notifications:
  email:
    on_success: change
    on_failure: always

Ce fichier indique à Travis : l’environnement à utiliser, les commandes à exécuter, et quand envoyer des notifications. La directive cache: npm accélère les builds en réutilisant les dépendances téléchargées lors des runs précédents.

Testez cette configuration sur une branche de fonctionnalité avant de la pousser sur main. Un fichier mal formé peut bloquer tous les builds.

Étape 3 : Utiliser GitHub Actions comme alternative ou complément

GitHub Actions est aujourd’hui l’option la plus directe pour les équipes qui hébergent leur code sur GitHub. L’intégration est native, la configuration se fait dans le même référentiel, et le marketplace d’actions prêtes à l’emploi couvre la plupart des cas courants.

Créez un fichier .github/workflows/ci.yml :

name: Pipeline CI

on:
  push:
    branches: [ main, develop ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [18.x, 20.x]

    steps:
    - uses: actions/checkout@v4
    - name: Setup Node.js
      uses: actions/setup-node@v4
      with:
        node-version: $\{\{ matrix.node-version \}\}
        cache: 'npm'
    - run: npm ci
    - run: npm test
    - run: npm run build

Ce workflow se déclenche sur chaque push vers main ou develop, et sur chaque pull request ciblant main. Il teste le code sur deux versions de Node.js en parallèle.

L’avantage principal de GitHub Actions par rapport à TravisCI n’est pas la performance brute, mais la cohérence : tout est dans le même endroit, le même outil, le même flux de travail. Pour la plupart des PME, c’est suffisant.

Étape 4 : Ajouter le déploiement continu

Une fois la CI en place, l’étape suivante est d’automatiser le déploiement. La règle de base : déployez d’abord vers un environnement de staging, validez, puis vers la production.

Voici comment étendre le workflow GitHub Actions pour inclure un déploiement conditionnel :

  deploy-staging:
    needs: test
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/develop'

    steps:
    - uses: actions/checkout@v4
    - name: Deploy to staging
      run: npm run deploy:staging
      env:
        DEPLOY_TOKEN: $\{\{ secrets.STAGING_DEPLOY_TOKEN \}\}

  deploy-production:
    needs: test
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'

    steps:
    - uses: actions/checkout@v4
    - name: Deploy to production
      run: npm run deploy:prod
      env:
        DEPLOY_TOKEN: $\{\{ secrets.PROD_DEPLOY_TOKEN \}\}

Les secrets (clés API, tokens de déploiement) sont stockés dans GitHub Secrets (Settings > Secrets and variables > Actions), jamais dans le code ou dans les fichiers de configuration versionnés.

Ajoutez un health check post-déploiement : une requête simple vers un endpoint de santé de votre application. Si le check échoue, déclenchez un rollback automatique vers la version précédente. Ce mécanisme transforme un incident potentiel en une correction transparente pour les utilisateurs.

Étape 5 : Notifications et monitoring

Un pipeline sans visibilité est à moitié inutile. Configurez au minimum des notifications vers le canal de communication de votre équipe.

Pour Slack :

    - name: Notification Slack
      if: always()
      uses: 8398a7/action-slack@v3
      with:
        status: $\{\{ job.status \}\}
        channel: '#deployments'
        webhook_url: $\{\{ secrets.SLACK_WEBHOOK \}\}

Au-delà des notifications de build, mettez en place un monitoring applicatif post-déploiement. Les métriques à surveiller en priorité : taux d’erreur HTTP, temps de réponse médian et p95, disponibilité. Une augmentation anormale du taux d’erreur dans les minutes qui suivent un déploiement est un signal clair.

Dans notre travail avec des équipes tech de PME, le point de rupture le plus fréquent n’est pas la configuration du pipeline lui-même, mais l’absence de visibilité après le déploiement : le build passe au vert, mais personne ne sait que l’application répond avec des erreurs en production.

Erreurs courantes et comment les éviter

Voici les cinq problèmes les plus fréquents observés en pratique :

Tests insuffisants. Configurer uniquement des tests unitaires donne une fausse sécurité. Un pipeline vert ne garantit rien si les tests ne couvrent pas les interactions entre composants. Visez une couverture en couches : tests unitaires en majorité, tests d’intégration pour les points critiques, quelques tests end-to-end pour les parcours utilisateur principaux.

Absence de rollback. Un déploiement qui échoue sans plan de retour arrière peut immobiliser une application pendant une heure. Testez votre procédure de rollback avant d’en avoir besoin.

Secrets mal gérés. Stocker une clé API dans un fichier de configuration versionné est une erreur de sécurité courante. Utilisez exclusivement les systèmes dédiés : GitHub Secrets, AWS Secrets Manager, ou équivalent.

Branches trop longues. Une branche de fonctionnalité qui vit trois semaines accumule des divergences et des conflits. L’intégration continue suppose une intégration… continue.

Pas de monitoring post-déploiement. Le déploiement n’est pas la dernière étape. Ce qui compte, c’est que l’application fonctionne correctement après.

Métriques à suivre pour évaluer la maturité de votre pipeline

Quatre indicateurs suffisent pour avoir une vision claire :

MétriqueCible raisonnableCe qu’elle mesure
Durée de buildMoins de 10 minutesFeedback loop pour les développeurs
Taux de succès des déploiementsSupérieur à 95 %Fiabilité du pipeline
MTTR (temps de rétablissement)Moins de 30 minutesRésilience opérationnelle
Fréquence de déploiementAu moins hebdomadaireVélocité de livraison

Ces métriques ne sont pas des objectifs à atteindre dès le premier jour. Elles servent à observer les tendances dans le temps et à identifier où concentrer les efforts d’amélioration.

Checklist de mise en place

Référentiel et branches

  • Structure de branches définie (main, develop, feature/*)
  • Règles de protection configurées sur main
  • Permissions d’équipe vérifiées

Pipeline CI

  • Service CI choisi et connecté au référentiel
  • Fichier de configuration créé et testé sur une branche de fonctionnalité
  • Tests automatisés : unitaires et intégration
  • Cache configuré pour réduire la durée des builds

Déploiement CD

  • Environnement de staging opérationnel
  • Scripts de déploiement automatisés
  • Secrets stockés dans le gestionnaire dédié, pas dans le code
  • Health check post-déploiement configuré
  • Procédure de rollback testée

Monitoring

  • Notifications d’équipe (Slack ou Teams)
  • Alertes sur les métriques applicatives critiques
  • Documentation des procédures d’urgence à jour

Mettre en place un pipeline CI/CD n’est pas un projet de plusieurs mois. Avec GitHub Actions ou TravisCI, une configuration fonctionnelle peut être en place en une journée. La vraie discipline, c’est ce qui vient après : maintenir les tests à jour, surveiller les déploiements, et améliorer le pipeline au fur et à mesure que l’équipe grandit.

Si vous souhaitez aller plus loin sur l’automatisation des processus techniques ou opérationnels au sein de votre organisation, Basalt Studio accompagne les PME dans l’implémentation d’agents IA et de workflows automatisés adaptés à leur contexte. Vous pouvez réserver un appel stratégie directement ici : https://cal.com/eliott-ardisson-kzq7zs/ai-strategy-call