Options d’installation
| Méthode | Commande | Usage |
|---|---|---|
| WAR | java -jar jenkins.war | Dev local, test rapide |
| Package OS | apt install jenkins / yum install jenkins | VM Linux en production |
| Docker | docker run jenkins/jenkins:lts | Isolation, portabilité |
| Helm (K8s) | helm install jenkins jenkins/jenkins | Cloud-native, scale |
Installation Docker (recommandé pour débuter)
docker run -d \
--name jenkins \
-p 8080:8080 -p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
--restart unless-stopped \
jenkins/jenkins:lts-jdk17Premier démarrage :
# Récupérer le mot de passe initial
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPasswordInstallation sur Kubernetes avec Helm
helm repo add jenkins https://charts.jenkins.io
helm repo update
helm install jenkins jenkins/jenkins \
--namespace jenkins \
--create-namespace \
--set controller.serviceType=LoadBalancer \
--set persistence.enabled=true \
--set persistence.size=20Gi \
-f jenkins-values.yamljenkins-values.yaml minimal :
controller:
numExecutors: 0 # Controller sans executors
installPlugins:
- kubernetes:latest
- workflow-aggregator:latest
- git:latest
- credentials-binding:latest
- blueocean:latest
JCasC:
defaultConfig: trueJenkins Configuration as Code (JCasC)
JCasC permet de déclarer toute la configuration Jenkins dans un fichier YAML — reproductible et versionné.
# jenkins-casc.yaml
jenkins:
systemMessage: "Jenkins géré par JCasC"
numExecutors: 0
securityRealm:
local:
allowsSignup: false
users:
- id: admin
password: "${JENKINS_ADMIN_PASSWORD}"
authorizationStrategy:
roleBased:
roles:
global:
- name: admin
permissions:
- "Overall/Administer"
assignments:
- admin
credentials:
system:
domainCredentials:
- credentials:
- usernamePassword:
id: docker-registry
username: "${DOCKER_USER}"
password: "${DOCKER_PASSWORD}"
- string:
id: sonar-token
secret: "${SONAR_TOKEN}"
unclassified:
slackNotifier:
teamDomain: monorg
tokenCredentialId: slack-tokenIndiquer l’emplacement du fichier :
# Variable d'environnement
CASC_JENKINS_CONFIG=/var/jenkins_home/casc_configs/jenkins-casc.yamlConfiguration de sécurité initiale
- Realm : définir la source d’authentification (local, LDAP, SAML, GitHub OAuth)
- Authorization : définir les droits (plugin Role Strategy recommandé)
- CSRF Protection : activée par défaut depuis Jenkins 2.x
- Agent → Controller Security : restreindre ce que les agents peuvent faire sur le Controller
Manage Jenkins → Security → Configure Global Security
├── Security Realm : Jenkins' own user database / LDAP
├── Authorization : Role-Based Strategy
└── Agent Protocols : JNLPv4, désactiver les anciens
Maintenance courante
| Tâche | Comment |
|---|---|
| Mise à jour des plugins | Manage Jenkins → Plugins → Updates |
| Mise à jour de Jenkins | Remplacer le WAR / apt upgrade jenkins / helm upgrade |
| Sauvegarde | Sauvegarder JENKINS_HOME (jobs/, credentials.xml, config.xml, plugins/) |
| Nettoyage des builds | buildDiscarder dans les pipelines ou Workspace Cleanup Plugin |
| Monitoring | Exposer les métriques via le plugin Prometheus Metrics → scraper avec Prometheus |
En relation avec
- Administration — Vue d’ensemble — hub administration
- Plugins essentiels — liste des plugins à installer en priorité
- Jenkins sur AWS (IaC + JCasC) — déploiement complet avec Packer + Terraform