Auteur : Adel TAHANOUT
Contexte d’évaluation — Dépôt GitHub attendu avec :
- Compte rendu d’installation Jenkins, 2) Plugins Jenkins, 3) Déploiement d’une app sur Jenkins. Format Markdown + Mermaid (schémas).
Erreur dans le TP : « Java : Jenkins nécessite Java 8 ou supérieur (recommandé : Java 11 ou 17) »
Correction : Jenkins LTS actuel exige Java 17 (ou 21). Java 8/11 ne sont plus supportés.
Précision Windows : pendant l’installation .msi, si l’écran « Service Logon Credentials » apparaît, un compte LocalSystem suffit pour un usage local ; pour un usage réseau, utiliser un compte utilisateur ayant le droit Log on as a service.
- OS : Windows 10/11 x64
- Navigateur : Edge/Chrome
- Java : JDK 17
- Jenkins : LTS
where java
java -version
https://www.jenkins.io/download/
(Windows, .msi)
- Accepter la licence, dossier par défaut :
C:\Program Files\Jenkins
. - Sélection Java : pointer le répertoire JDK 17 (
C:\Program Files\Java\jdk-17\
).
- Ouvrir :
http://localhost:8080
- Mot de passe initial :
# Un des deux chemins (selon version MSI)
type "%ProgramData%\Jenkins\.jenkins\secrets\initialAdminPassword"
- Choisir Install suggested plugins, puis créer un utilisateur.
# Service Windows
services.msc # Rechercher "Jenkins"
sc query jenkins
net stop jenkins & net start jenkins
Port : 8080 par défaut.
Changer de port (mode WAR ponctuel) :
java -jar jenkins.war --httpPort=9090
- Pipeline
- Git plugin
- NodeJS plugin
- Email Extension plugin
- Workspace Cleanup plugin
- Build Timeout plugin
Installation :
Gérer Jenkins → Gérer les plugins → Disponible → rechercher et installer les plugins ci-dessus.
-
Node.js :
Gérer Jenkins → Global Tool Configuration
Ajouter NodeJS (ex : NodeJS-18, installation automatique cochée). -
Git :
Vérifier que Git est bien configuré dans Global Tool Configuration.
-
Nouveau job
- Nouvel item → Pipeline → Nommer (ex :
mon-app-js-pipeline
)
- Nouvel item → Pipeline → Nommer (ex :
-
Configuration du pipeline
- Définition : Pipeline script from SCM
- SCM : Git
- Repository URL :
https://github.com/AdelTHT/Git.git
- Branch Specifier :
*/main
- Script Path :
Jenkinsfile
-
Triggers
- Build Triggers : GitHub hook trigger for GITScm polling
- Poll SCM :
H/5 * * * *
(toutes les 5 minutes)
mon-app-js/
├── src/
│ ├── index.html
│ ├── app.js
│ ├── styles.css
│ └── utils.js
├── tests/
│ └── app.test.js
├── package.json
├── Jenkinsfile
├── server.js
└── README.md
Voir le fichier Jenkinsfile
du projet pour un pipeline complet :
- Checkout
- Install dependencies
- Run tests (avec rapport JUnit)
- Lint/qualité
- Build
- Audit sécurité
- Déploiement staging (branche develop)
- Déploiement production (branche main)
- Health check
- Archivage artefacts
- Notifications email
- Premier déploiement (build sur main)
- Gestion des branches (déploiement staging sur develop)
- Tests unitaires (pipeline échoue si test KO)
- Archivage des artefacts
- Notification email (à configurer dans Jenkins, voir section Pipeline Jenkins)
- Couverture de code (Cobertura/Jest, à activer dans Jenkins et package.json)
- (Optionnel) Notification Slack
- Différence entre
npm install
etnpm ci
? - Pourquoi utiliser
when
dans le pipeline ? - Utilité des blocs
post
? - Pourquoi faire un backup avant déploiement ?
# Déclencher un build
java -jar jenkins-cli.jar -s http://localhost:8080 build "mon-app-js-pipeline"
# Voir les logs
java -jar jenkins-cli.jar -s http://localhost:8080 console "mon-app-js-pipeline" -f
# Lister les jobs
java -jar jenkins-cli.jar -s http://localhost:8080