CI/CD pour projets Java : 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

Introduction au CI/CD pour les projets Java avec GitHub Actions

Le développement logiciel moderne est impossible sans l'automatisation des processus de construction, de test et de déploiement. Le CI/CD (Continuous Integration / Continuous Deployment) est un ensemble de pratiques permettant aux équipes de livrer rapidement et en toute sécurité des modifications en production. Pour les projets Java, l'un des outils les plus pratiques est GitHub Actions — un système CI/CD intégré qui ne nécessite pas la configuration d'un serveur séparé.

Dans cet article, nous allons voir comment configurer un pipeline pour une application Java : de la compilation et de l'exécution des tests à la publication des artefacts. Vous apprendrez à utiliser Maven, JUnit et GitHub Actions pour créer un processus de livraison fiable.



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

GitHub Actions fonctionne sur la base de workflows — des fichiers de configuration au format YAML, stockés dans le dossier .github/workflows. Chaque workflow se compose d'un ou plusieurs jobs, qui s'exécutent sur des machines virtuelles (runners).

Pour un projet Java, un workflow typique comprend les étapes suivantes :

  • Checkout — clonage du dépôt
  • Setup JDK — installation de la version Java requise
  • Cache — mise en cache des dépendances Maven/Gradle pour accélérer la construction
  • Build & Test — compilation et exécution des tests
  • Deploy — publication des artefacts (optionnel)

Examinons un exemple de configuration de base pour Java 17 et Maven :

name: Java CI with Maven

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

- name: Upload JAR artifact uses: actions/upload-artifact@v4 with: name: app-jar path: target/*.jar

Ce workflow se déclenche à chaque push ou pull request sur la branche main. Il construit le projet, exécute les tests et enregistre le fichier JAR en tant qu'artefact.



2. Configuration avancée : tests et qualité du code

Une simple construction n'est que le début. Dans les projets réels, il est important de contrôler la qualité du code. Ajoutons au workflow des étapes pour l'analyse statique et la génération de rapports.

Commençons par intégrer JaCoCo pour mesurer la couverture de code par les tests. Ajoutez le plugin dans pom.xml :

<plugin>    <groupId>org.jacoco</groupId>    <artifactId>jacoco-maven-plugin</artifactId>    <version>0.8.11</version>    <executions>        <execution>            <goals><goal>prepare-agent</goal></goals>        </execution>        <execution>            <id>report</id>            <phase>test</phase>            <goals><goal>report</goal></goals>        </execution>    </executions></plugin>

Maintenant, mettons à jour le workflow en ajoutant la vérification de la couverture et la publication du rapport :

    - name: Run tests with coverage      run: mvn verify

- name: Upload JaCoCo report uses: actions/upload-artifact@v4 with: name: coverage-report path: target/site/jacoco/

On peut également ajouter un linter comme Checkstyle ou SpotBugs. Exemple pour Checkstyle :

    - name: Checkstyle      run: mvn checkstyle:check

Ces étapes aideront à détecter automatiquement les problèmes dans le

Blogs

Book Recommendations