Vous déployez encore votre application Java via SSH ?
\n\nSi vous avez déjà configuré manuellement un projet Java en production — mvn clean install, scp sur le serveur, arrêt du processus, redémarrage — vous connaissez ce sentiment : tout semble fonctionner, mais chaque déploiement est comme un combat de boss. Un flag oublié, une version Java incorrecte, et l'application plante, tandis que vous recevez un message « Le serveur ne répond pas » à 3 heures du matin.
Aujourd'hui, nous allons voir comment construire un pipeline CI/CD pour Java à partir de zéro. Que vous utilisiez Spring Boot, Micronaut ou le bon vieux Java EE, ce pipeline vous sauvera les nerfs et du temps. Nous utiliserons Jenkins, Maven, Docker et GitHub. Tout sera réel : avec du code, des configurations et des exemples concrets.
\n\n\n\n
Qu'est-ce que le CI/CD et pourquoi en a-t-on besoin en Java ?
\n\nCI/CD (Intégration Continue / Livraison Continue) n'est pas qu'un mot à la mode. C'est un processus qui transforme votre code de « écrit à la va-vite » en « fonctionne de manière stable sur le serveur » sans votre intervention.
\n\n- \n
- Intégration Continue — chaque commit est automatiquement compilé et testé. Si les tests échouent, vous le savez immédiatement, pas une semaine plus tard. \n
- Livraison Continue — après une compilation réussie, le code est automatiquement déployé sur un serveur de test ou de production. \n
Pour Java, c'est particulièrement important : compilation avec Maven/Gradle, exécution des tests unitaires, tests d'intégration, vérification du style de code — tout cela peut et doit être automatisé. Sinon, vous perdrez des heures dans des tâches répétitives au lieu d'écrire des fonctionnalités.
\n\n\n\n
Étape 1. Préparation de l'environnement : de quoi avons-nous besoin
\n\nAvant d'écrire le pipeline, assurons-nous d'avoir tous les outils nécessaires. Pour notre pipeline CI/CD pour Java, il nous faudra :
\n\n- \n
- GitHub (ou GitLab/Bitbucket) — un dépôt de code. \n
- Jenkins — un serveur d'automatisation. On peut l'installer localement ou sur un VPS. \n
- Maven — un outil de compilation pour le projet Java. \n
- Docker — pour la conteneurisation de l'application. \n
- Un serveur (ou le cloud) — où nous allons déployer. \n
Installons Jenkins sur Ubuntu (si vous avez un autre OS, ce n'est pas grave, le principe est le même) :
\n\nsudo apt update\nsudo apt install openjdk-11-jdk\nwget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -\nsudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'\nsudo apt update\nsudo apt install jenkins\nsudo systemctl start jenkins\n\n\nAprès l'installation, ouvrez http://votre-serveur:8080 et effectuez la configuration initiale. N'oubliez pas d'installer les plugins : Git, Maven Integration, Docker Pipeline, Blue Ocean (pour une belle interface).
\n\n
Étape 2. Écrire un projet Java simple (Spring Boot)
\n\nPour avoir de quoi nous entraîner, créons un service Spring Boot minimal. Si vous avez déjà un projet, sautez simplement cette étape.
\n\n// Main.java\npackage com.example.demo;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n@SpringBootApplication\n@RestController\npublic class DemoApplication {\n\n public static void main(String[] args) {\n SpringApplication.run(DemoApplication.class, args);\n }\n\n @GetMapping("/")\n public String hello() {\n return "Hello from CI/CD pipeline!";\n }\n}\n\n\nN'oubliez pas le pom.xml avec les dépendances. Un starter Spring Boot standard + le plugin Maven compiler. C'est notre cobaye.
\n\n
Étape 3. Créer le Jenkinsfile — le cœur du pipeline
\n\nLe Jenkinsfile est un fichier déclaratif