Jenkins

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Serveur d'intégration continue (CI/CD)
Langage Java
Port par défaut 8080
Voir aussi Java · Tomcat

Jenkins est un serveur d'intégration continue écrit en Java. Il orchestre la construction, les tests et le déploiement d'applications.

Ressources

Jobs

Un job décrit une tâche Jenkins :

  • Freestyle project — le plus courant (exécute des scripts shell/batch).
  • Pipeline (workflow) — décrit par un DSL (Domain Specific Language).
  • Multi-configuration — combine plusieurs configurations.
  • GitHub organization — regroupe les dépôts d'une organisation.
  • Folder — groupe de jobs.
  • Multibranch pipeline — un pipeline par branche Git.

Build

  • Un build est le résultat de l'exécution d'un projet.
  • Un build step est une tâche unitaire d'un projet.
  • Un artifact est un fichier immuable produit par un build (jar, war…).
  • Un repository est un répertoire contenant du code.

Gestion du code source (SCM)

  • Permet de tracer les changements (qui, quoi, comment).
  • Permet de valider les changements et de les pousser.

Tests et notifications

Exemple de test unitaire :

function add_5(a) {
    return a + 5;
}

@Test
function test_add_5() {
    assertEquals(10, add_5(5), "5 + 5 doit valoir 10");
}

Types de tests couramment orchestrés :

  • Test unitaire — teste une classe, une méthode, un module.
  • Smoke test — vérifie la stabilité de base (chargement, menus…).
  • Test fonctionnel — vérifie le comportement attendu.
  • Test d'acceptation — vérifie le respect des spécifications.
  • Notifications — remontée des résultats.

Build distribué

Utiliser les étapes de pipeline pour paralléliser (par exemple tester plusieurs navigateurs).

API REST

# point d'entrée de l'API
curl http://localhost:8080/api/

# déclencher un job
curl http://localhost:8080/job/jobname/build --user username:password

# avec paramètres
curl http://localhost:8080/job/jobname/buildWithParameters \
  --user username:password \
  --data-urlencode json='{"parameter":[{"name":"id","value":"abcd"}]}'

Voir aussi