Interface et Jobs Jenkins
Interface web
Dashboard principal
┌─────────────────────────────────────────────────────────────┐
│ Jenkins [Search] [Admin ▼] │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌─────────────────────────────────────┐ │
│ │ New Item │ │ Build Queue │ │
│ │ People │ │ (empty) │ │
│ │ Build History│ ├─────────────────────────────────────┤ │
│ │ Manage │ │ Build Executor Status │ │
│ │ My Views │ │ ● master (idle) │ │
│ │ Credentials │ │ ● agent-1 (building #42) │ │
│ └──────────────┘ └─────────────────────────────────────┘ │
│ │
│ All Jobs │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Name │ Status │ Last │ Duration │ Weather │ │
│ │──────────────┼────────┼──────┼──────────┼───────────│ │
│ │ ☀️ my-app │ ✓ │ #45 │ 2m 30s │ ☀️ │ │
│ │ ⛈️ api-tests │ ✗ │ #12 │ 5m 15s │ ⛈️ │ │
│ │ 🌤️ deploy │ ● │ #8 │ 1m 45s │ 🌤️ │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
Indicateurs de statut
| Icône | Signification |
|---|---|
| 🔵 ✓ | Build réussi |
| 🔴 ✗ | Build échoué |
| 🟡 ⚠ | Build instable (tests échoués) |
| ⚪ | Jamais construit |
| 🔄 | Build en cours |
| ⏸️ | Build désactivé |
Weather (Météo)
La météo indique la tendance des derniers builds :
| Météo | Signification |
|---|---|
| ☀️ | 80%+ de réussite |
| 🌤️ | 60-80% de réussite |
| ⛅ | 40-60% de réussite |
| 🌧️ | 20-40% de réussite |
| ⛈️ | 0-20% de réussite |
Types de Jobs
Freestyle Project
Job classique configuré via l'interface.
Cas d'usage : Scripts simples, tâches ponctuelles.
Pipeline
Job défini en code Groovy.
Cas d'usage : CI/CD complexes, Pipeline as Code.
Multibranch Pipeline
Un pipeline automatique par branche Git.
Cas d'usage : Projets avec plusieurs branches actives.
Folder
Organisation logique des jobs.
my-organization/
├── frontend/
│ ├── web-app
│ └── mobile-app
├── backend/
│ ├── api
│ └── workers
└── infrastructure/
├── terraform
└── kubernetes
Créer un Freestyle Job
Étape 1 : Nouveau job
- Cliquer "New Item"
- Entrer le nom :
my-first-job - Sélectionner "Freestyle project"
- Cliquer "OK"
Étape 2 : Configuration générale
General
├── Description: Mon premier job Jenkins
├── Discard old builds: ✓
│ └── Max # of builds to keep: 10
├── GitHub project: https://github.com/user/repo
└── This project is parameterized: ✓
Étape 3 : Source Code Management
Source Code Management
├── Git
│ ├── Repository URL: https://github.com/user/repo.git
│ ├── Credentials: github-credentials
│ └── Branches to build: */main
Étape 4 : Build Triggers
Build Triggers
├── Build periodically: H/15 * * * *
├── Poll SCM: H/5 * * * *
├── GitHub hook trigger for GITScm polling: ✓
└── Build after other projects: upstream-job
Syntaxe Cron
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-7)
│ │ │ │ │
* * * * *
Exemples:
H * * * * # Toutes les heures (minute aléatoire)
H/15 * * * * # Toutes les 15 minutes
H 0 * * * # Chaque jour à minuit
H 0 * * 1-5 # Chaque jour de semaine à minuit
Étape 5 : Build Environment
Build Environment
├── Delete workspace before build starts: ✓
├── Add timestamps to Console Output: ✓
├── Use secret text(s) or file(s): ✓
│ └── Secret text: DOCKER_PASSWORD
└── Inject environment variables: ✓
└── Properties Content: ENV=production
Étape 6 : Build Steps
Build Steps
├── Execute shell:
│ #!/bin/bash
│ echo "Building version: $BUILD_NUMBER"
│ npm install
│ npm run build
│ npm test
│
├── Invoke Gradle script:
│ └── Tasks: clean build test
│
└── Execute Windows batch command:
└── msbuild /p:Configuration=Release
Étape 7 : Post-build Actions
Post-build Actions
├── Archive the artifacts: target/*.jar
├── Publish JUnit test result report: target/test-reports/*.xml
├── E-mail Notification: [email protected]
├── Build other projects: deploy-job
└── Slack Notifications: ✓
Paramètres de build
Types de paramètres
// String Parameter
properties([
parameters([
string(
name: 'BRANCH',
defaultValue: 'main',
description: 'Branche à construire'
),
// Choice Parameter
choice(
name: 'ENVIRONMENT',
choices: ['dev', 'staging', 'prod'],
description: 'Environnement cible'
),
// Boolean Parameter
booleanParam(
name: 'SKIP_TESTS',
defaultValue: false,
description: 'Passer les tests'
),
// Password Parameter
password(
name: 'DEPLOY_TOKEN',
description: 'Token de déploiement'
),
// File Parameter
file(
name: 'CONFIG_FILE',
description: 'Fichier de configuration'
)
])
])
Utilisation des paramètres
# Dans un script shell
echo "Deploying to: ${ENVIRONMENT}"
echo "Branch: ${BRANCH}"
if [ "${SKIP_TESTS}" = "true" ]; then
echo "Skipping tests..."
else
npm test
fi
Variables d'environnement
Variables prédéfinies
| Variable | Description |
|---|---|
BUILD_NUMBER | Numéro du build |
BUILD_ID | ID unique du build |
BUILD_URL | URL du build |
JOB_NAME | Nom du job |
WORKSPACE | Chemin du workspace |
JENKINS_URL | URL de Jenkins |
GIT_COMMIT | Hash du commit |
GIT_BRANCH | Branche Git |
NODE_NAME | Nom de l'agent |
EXECUTOR_NUMBER | Numéro de l'executor |
Accéder aux variables
# Shell
echo "Build #${BUILD_NUMBER} on ${NODE_NAME}"
echo "Commit: ${GIT_COMMIT}"
# Groovy
echo "Build: ${env.BUILD_NUMBER}"
echo "Job: ${env.JOB_NAME}"
Console Output
Lire les logs
Started by user admin
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/my-job
[my-job] $ /bin/bash -xe /tmp/jenkins123.sh
+ echo Building version: 42
Building version: 42
+ npm install
...
+ npm test
All tests passed!
Finished: SUCCESS
Filtrer les logs
// Masquer les secrets
wrap([$class: 'MaskPasswordsBuildWrapper']) {
sh 'echo "Password: $SECRET_PASSWORD"'
}
Gestion du Workspace
Structure
/var/jenkins_home/workspace/
├── my-job/
│ ├── src/
│ ├── package.json
│ └── node_modules/
├── my-job@2/ # Builds parallèles
└── my-job@tmp/ # Fichiers temporaires
Nettoyer le workspace
// Dans un pipeline
cleanWs()
// Ou en Freestyle
// ✓ Delete workspace before build starts
Résumé
| Concept | Description |
|---|---|
| Dashboard | Vue d'ensemble des jobs |
| Freestyle | Job configuré via UI |
| Pipeline | Job défini en code |
| Multibranch | Pipeline par branche |
| Parameters | Entrées utilisateur |
| Workspace | Répertoire de travail |