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.
- Objectif
- Prérequis
- Structure du projet
- Configuration (.env)
- Dockerfile
- docker-compose.yml (points clés)
- Scripts
- Pipelines Jenkins (Jenkinsfile)
- Démarrage / Mise à jour / Rollback
- Sécurité – points importants
- Documentation
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_addetDOCKER_GID - Le registre Docker (Nexus) est configuré via
.env
- Docker Engine
- Docker Compose
- Droits suffisants pour exécuter Docker sur l’hôte
.
├── 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
JENKINS_HTTP=7788:8080
JENKINS_AGENT=55000:50000
JENKINS_TAG=2.528.3-lts-jdk21
DEPOT=sonatype-nexus.backhole.ovhLe 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.
- 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
Démarre Jenkins :
./script/run.shExpose DOCKER_GID (GID du groupe docker de l’hôte) pour Docker Compose.
Connexion interactive au registre Docker (Nexus).
Build et push de l’image Jenkins vers le registre.
Sauvegarde du volume Docker jenkins_home dans ./backup/.
Restauration complète du volume jenkins_home depuis une archive.
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).
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.
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.
api-tests-postman-newman.Jenkinsfile: exécution de tests API via Newman.
./script/run.sh- Sauvegarde :
./script/backup_volume.sh-
Modifier
JENKINS_TAGdans.env -
Redémarrer :
docker compose down
docker compose up -d --build- Revenir à l’ancien
JENKINS_TAG - Relancer Jenkins
- 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