CI/CD pour Java : GitHub Actions de la configuration au déploiement

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

Introduction : Pourquoi CI/CD est un must-have pour le développeur Java

Le développement Java moderne est impensable sans automatisation. Lancer manuellement les tests, compiler les fichiers .jar et déployer sur le serveur prend des heures et entraîne des erreurs humaines. CI/CD (Intégration Continue / Déploiement Continu) résout ce problème : chaque commit dans le dépôt est automatiquement vérifié, compilé et, si nécessaire, envoyé en production.

GitHub Actions est un outil intégré à GitHub qui permet de créer des pipelines directement dans le dépôt. Il est gratuit pour les projets publics, s'intègre facilement avec Maven/Gradle et prend en charge Java 8–21. Dans cet article, nous allons parcourir le cycle complet : du déclencheur sur push à la publication de l'artefact.



1. Bases de GitHub Actions : structure d'un workflow

Un workflow (processus de travail) est un fichier YAML situé dans .github/workflows/. Il se compose de :

  • Déclencheurs (push, pull_request, schedule) ;
  • Jobs (tâches) qui s'exécutent sur des machines virtuelles (runners) ;
  • Steps (étapes) à l'intérieur de chaque tâche.

Pour un projet Java, un workflow typique comprend l'installation du JDK, l'exécution des tests Maven/Gradle et la compilation de l'artefact.



1.1. Premier workflow : tester un projet Java

Créez le fichier .github/workflows/ci.yml avec le contenu suivant :

name: Java CI

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

jobs: build: runs-on: ubuntu-latest

steps: - uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: maven - name: Build with Maven run: mvn -B package --file pom.xml - name: Run tests run: mvn test

Que se passe-t-il ici :

  • actions/checkout — clone le dépôt ;
  • setup-java — installe JDK 17 (Temurin) et met en cache les dépendances Maven ;
  • mvn package — compile le projet et exécute les tests ;
  • mvn test — exécution explicite des tests (peut être combiné avec package).

Après un push sur main, vous verrez une coche verte à côté du commit — cela signifie que le pipeline s'est déroulé avec succès.



2. Configuration avancée pour Java : matrice de versions et mise en cache

Les projets réels nécessitent souvent une vérification sur plusieurs versions de Java. GitHub Actions prend en charge la stratégie de matrice (matrix strategy).



2.1. Matrice JDK

jobs:  test:    runs-on: ubuntu-latest    strategy:      matrix:        java: [11, 17, 21]    steps:    - uses: actions/checkout@v4    - name: Set up JDK ${{ matrix.java }}      uses: actions/setup-java@v4      with:        java-version: ${{ matrix.java }}        distribution: 'temurin'        cache: maven    - run: mvn test

Cette approche garantit que votre code est compatible avec les versions LTS de Java. Les tâches s'exécutent en parallèle, ce qui fait gagner du temps.



2.2. Mise en cache des dépendances

Nous avons déjà spécifié cache: maven — cela met automatiquement en cache ~/.m2/repository. Pour Gradle, utilisez cache: gradle. Le cache accélère la compilation de 2 à 3 fois.



3. Compilation et publication des artefacts (JAR/Docker)

Après des tests réussis, il faut obtenir un artefact prêt. Examinons deux scénarios courants.



3.1. Téléchargement du fichier JAR dans les artefacts GitHub

jobs:  build:    runs-on: ubuntu-latest    steps:    - uses: actions/checkout@v4    - name: Set up JDK 17      uses: actions/setup-java@v4      with:        java-version: '17'        distribution: 'temurin'    - run: mvn clean package    - name: Upload JAR      uses: actions/upload-artifact@v4      with:                

Blogs

Book Recommendations