Ceci est une ancienne révision du document !
CI-CD
Mise en place
SpringBoot-GitHub
Intégration de Junit Jupiter
Déjà présent dans pom.xml
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test-junit5</artifactId>
<scope>test</scope>
</dependency>
Exécution des tests en local :
mvn -B -U -ntp test
CI GitHub actions
A mettre dans .github/workflows/ci-tests.yml :
Vérifiez :
- La version de java (17 ?)
- Le nom de la branche principale (master/main ?)
name: CI • Tests (Maven)
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
concurrency:
group: ci-tests-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
java: [ '17' ]
env:
MAVEN_OPTS: -XX:+UseParallelGC -Xmx1g -Djava.awt.headless=true
MAVEN_ARGS: ""
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Temurin JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ matrix.java }}
cache: maven
- name: Build & test
run: mvn -B -U -ntp $MAVEN_ARGS verify
- name: Upload test and coverage reports
if: always()
uses: actions/upload-artifact@v4
with:
name: test-reports-java-${{ matrix.java }}
path: |
**/target/surefire-reports/**
**/target/failsafe-reports/**
**/target/site/jacoco/**
retention-days: 7
Le workflow :
- Se déclenche sur push et pull_request vers master.
- Installe JDK 17, restaure le cache Maven, compile et lance les tests (verify).
- Archive les rapports (téléchargeables depuis l’onglet “Actions” de Github).
Couverture JaCoCo
Ajoute la configuration JaCoCo+Surefire dans pom.xml :
Ajouter les numéros de version :
<properties>
<java.version>17</java.version>
<kotlin.version>1.9.25</kotlin.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.surefire.plugin.version>3.2.5</maven.surefire.plugin.version>
<jacoco.version>0.8.12</jacoco.version>
</properties>
Ajouter les 2 plugins Maven suivants :
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin.version}</version>
<configuration>
<useModulePath>false</useModulePath>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</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>
</plugins>
</build>
Le rapport de couverture (téléchargeable via actions) :
{{:eadl:bloc3:dev_av:pasted:20250917-002448.png}}