CI/CD pour projets C++ : Configuration de GitHub Actions

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

CI/CD pour les projets C++ : Guide complet de configuration de GitHub Actions



Dans le développement logiciel moderne, l'automatisation des processus de compilation, de test et de déploiement est devenue non seulement une commodité, mais une nécessité. Pour les projets C++, qui se caractérisent souvent par des systèmes de compilation et des dépendances complexes, l'adoption du CI/CD (Continuous Integration / Continuous Deployment) est particulièrement pertinente. Dans cet article, nous allons détailler comment configurer un pipeline CI/CD pour les projets C++ en utilisant GitHub Actions — un outil d'automatisation puissant et intégré.



Qu'est-ce que GitHub Actions et pourquoi est-il adapté au C++ ?



GitHub Actions est une plateforme d'automatisation de workflows qui permet de créer des pipelines CI/CD directement dans votre dépôt GitHub. Pour les développeurs C++, c'est une solution idéale pour plusieurs raisons :



  • Minutes de compilation gratuites pour les dépôts publics.
  • Prise en charge de Linux, macOS et Windows — vous pouvez tester la compilation multiplateforme.
  • Configuration flexible via des fichiers YAML.
  • Vaste écosystème d'actions prêtes à l'emploi pour installer des compilateurs, des dépendances et des outils.


L'élément principal est le workflow, décrit dans un fichier .github/workflows/*.yml. Chaque workflow se compose d'un ou plusieurs jobs (tâches) qui s'exécutent sur des machines virtuelles (runners).



Configuration d'un pipeline de base : compilation et test



Commençons par le plus simple : créons un workflow qui compilera votre projet C++ avec CMake et exécutera les tests à chaque fois que vous pousserez des modifications vers la branche main ou créerez une Pull Request.



Créez un fichier .github/workflows/build.yml à la racine de votre dépôt et ajoutez-y le code suivant :



name: C++ CI Build

on: push: branches: [ "main" ] pull_request: branches: [ "main" ]

jobs: build: runs-on: ubuntu-latest

steps: - name: Checkout repository uses: actions/checkout@v4

- name: Install dependencies run: | sudo apt-get update sudo apt-get install -y cmake g++ libgtest-dev

- name: Configure CMake run: cmake -B build -DCMAKE_BUILD_TYPE=Release

- name: Build run: cmake --build build --config Release

- name: Run tests working-directory: ./build run: ctest --output-on-failure


Détaillons ce code étape par étape :

  • name — le nom du workflow qui s'affichera dans l'interface GitHub.
  • on — les déclencheurs qui lancent le workflow (push et pull_request sur main).
  • runs-on — le système d'exploitation du runner (ubuntu-latest, windows-latest, macos-latest).
  • actions/checkout — l'action standard qui clone votre dépôt.
  • Install dependencies — installation de CMake, du compilateur GCC et de la bibliothèque Google Test pour les tests unitaires.
  • Configure, Build, Run tests — les commandes standard de CMake pour la compilation et l'exécution des tests.


Optimisation : mise en cache et compilation matricielle



Le pipeline de base fonctionne, mais il peut être considérablement amélioré. Deux techniques clés sont la mise en cache des dépendances et la compilation matricielle.



Mise en cache pour accélérer la compilation

À chaque exécution du workflow, le runner télécharge toutes les dépendances à nouveau. Cela prend du temps. Utilisez actions/cache pour conserver le cache de CMake et des paquets installés :



    - name: Cache CMake build      uses: actions/cache@v3      with:        path: |          build          /usr/l                

Blogs

Book Recommendations