Skip to content

About

CI/CD Jenkins avec Docker, agents dédiés et images CI versionnées (Java 21, Maven, Postman), prêtes pour un usage professionnel.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

60 Commits

Folders and files

Repository files navigation

Jenkins (CI/CD) – Docker Compose (Jenkins officiel + Docker CLI)

Accès Jenkins (environnement à la demande)

L’instance Jenkins associée à ce projet est hébergée sur une infrastructure personnelle et n’est pas exposée en permanence pour des raisons de sécurité et de coûts.

Elle peut être démarrée ponctuellement à des fins de démonstration. L’ensemble des pipelines, scripts et configurations nécessaires à son déploiement sont disponibles dans ce dépôt.

Sommaire


Objectif

Ce projet déploie Jenkins LTS avec Docker Compose, en s’appuyant sur l’image officielle jenkins/jenkins et une couche minimale permettant l’utilisation de la commande docker (Docker CLI) sans daemon dans le conteneur Jenkins.

Principes :

  • Jenkins stocke ses données dans un volume Docker externe : jenkins_home
  • Jenkins accède au Docker de l’hôte via le socket /var/run/docker.sock
  • Les permissions Docker sont gérées via group_add et DOCKER_GID
  • Le registre Docker (Nexus) est configuré via .env

Prérequis

  • Docker Engine
  • Docker Compose
  • Droits suffisants pour exécuter Docker sur l’hôte

Structure du projet

.
├── docker-compose.yml
├── Dockerfile
├── .env
├── Jenkinsfile
├── pipelines-tools/
│   ├── agents/
│   ├── infra/
│   ├── postman/
│   └── demo/
└── script/
    ├── run.sh
    ├── docker_id.sh
    ├── login_nexus.sh
    ├── build_push.sh
    ├── backup_volume.sh
    └── restore_volume.sh

Configuration (.env)

JENKINS_HTTP=7788:8080
JENKINS_AGENT=55000:50000
JENKINS_TAG=2.528.3-lts-jdk21
DEPOT=sonatype-nexus.backhole.ovh

Dockerfile

Le Dockerfile installe uniquement le Docker CLI afin de permettre l’exécution de commandes Docker depuis Jenkins, en s’appuyant sur le socket Docker de l’hôte.


docker-compose.yml (points clés)

  • Image Jenkins construite et poussée sur le registre
  • Volume Docker externe jenkins_home
  • Montage du socket Docker :
    - /var/run/docker.sock:/var/run/docker.sock

Scripts

1. script/run.sh

Démarre Jenkins :

./script/run.sh

2. script/docker_id.sh

Expose DOCKER_GID (GID du groupe docker de l’hôte) pour Docker Compose.

3. script/login_nexus.sh

Connexion interactive au registre Docker (Nexus).

4. script/build_push.sh

Build et push de l’image Jenkins vers le registre.

5. script/backup_volume.sh

Sauvegarde du volume Docker jenkins_home dans ./backup/.

6. script/restore_volume.sh

Restauration complète du volume jenkins_home depuis une archive.


Pipelines Jenkins (Jenkinsfile)

Le dossier pipelines-tools/ regroupe l’ensemble des pipelines Jenkins utilisés comme outils CI/CD, pipelines d’infrastructure, pipelines d’exemple et pipelines de build d’images.

Chaque pipeline est versionné sous forme de fichier *.Jenkinsfile et dispose, le cas échéant, d’un fichier de description HTML associé (*.description.html).

pipelines-tools/agents/

  • build-agent-maven-jdk8.Jenkinsfile : build, test et publication d’une image Docker d’agent Jenkins (Maven 3.8.5, JDK 8, Docker CLI).
  • build-ci-image-postman-tools.Jenkinsfile : build, test et publication d’une image Docker
    d’outillage CI pour les tests API, basée sur Node.js et intégrant Postman / Newman.

pipelines-tools/infra/

  • infra-docker-access-check.Jenkinsfile : diagnostic des permissions et accès Docker.
  • infra-docker-daemon-smoke-test.Jenkinsfile : validation avancée de l’intégration Docker.

pipelines-tools/postman/

  • api-tests-postman-newman.Jenkinsfile : exécution de tests API via Newman.

Démarrage / Mise à jour / Rollback

Démarrage

./script/run.sh

Mise à jour Jenkins

  1. Sauvegarde :
./script/backup_volume.sh
  1. Modifier JENKINS_TAG dans .env

  2. Redémarrer :

docker compose down
docker compose up -d --build

Rollback

  • Revenir à l’ancien JENKINS_TAG
  • Relancer Jenkins

Sécurité – points importants

  • Le socket Docker donne un accès étendu à l’hôte
  • À utiliser uniquement dans un environnement contrôlé
  • Supprimer les plugins obsolètes ou vulnérables

Documentation

About

CI/CD Jenkins avec Docker, agents dédiés et images CI versionnées (Java 21, Maven, Postman), prêtes pour un usage professionnel.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages