32
Hudson Serveur d’Intégration Continue Adrien Lecharpentier IR3 Ingénieurs2000, Université de Marne la Vallée

Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

HudsonServeur d’Intégration Continue

Adrien Lecharpentier

IR3 – Ingénieurs2000, Université de Marne la Vallée

Page 2: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

Hudson

06/12/2010Adrien Lecharpentier2

1. Qu’est-ce que s’est ?

2. A quoi ça sert ?

3. Comment ça fonctionne ?

4. Comment s’en sert-on ?

5. Pour aller plus loin…

Page 3: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

1. Qu’est-ce que s’est ?

06/12/2010Adrien Lecharpentier3

Créé par Kohsuke Kawaguchi , en

2008

Sun Microsystems InfraDNA

Produit JEE, interface web.

Sur le marché des serveurs

d’Intégration Continue.

Page 4: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

2. A quoi ça sert ?

06/12/2010Adrien Lecharpentier4

Intégration continue, rappel :

Processus « normal » :

Avec intégration continue :

Page 5: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

2. A quoi ça sert ?

06/12/2010Adrien Lecharpentier5

Code

• Règles d’écriture

Fabrication

• Traçabilité des fabrications

• Gestion des dépendances

• Génération d’exécutable

• Management d’ équipe

• Email, …

Tests

• Tests unitaires

• Tests de comportements

• Tests d’intégration / de validation

Déploiement

• Génération de rapports

• Documentation

• Résultats des tests

• Analyses des dépendances

• Mise sur étagère

Développeurs et Testeurs

Production / Intégration continue

Page 6: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

2. A quoi ça sert ?

06/12/2010Adrien Lecharpentier6

Serveur d’Intégration Continue (Continuous

Integration server).

Le besoin :

Automatisation

déclencher ce processus la nuit, le week-end…

reproduire le processus de compilation, de tests…

Centralisation

les résultats sont visibles par tous,

Historisation

ce qui s’est passé hier, il y a 10j, 20j…

Page 7: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

2. A quoi ça sert ?

06/12/2010Adrien Lecharpentier7

Le processus :

Récupération des dépendances

Gestion des versions

Récupération desdernières versions

Rapports

Historique desproductions

Récupération des dépendances

Mise sur étagère

Continous

Integration Server

Page 8: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

3. Comment ça fonctionne ?

06/12/2010Adrien Lecharpentier8

1. La technologie

2. Les installations

Page 9: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

3.1. La technologie

06/12/2010Adrien Lecharpentier9

Java / JEE

Installation possible sur tout type d’OS (PC portable,

NAS…)

Se repose sur l’hôte

N’embarque pas d’outil de haut niveau

Page 10: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

3.2. Les installations

06/12/2010Adrien Lecharpentier10

Pré-requis :

Java installé et configuré (JAVA_HOME)

Page 11: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

3.2. Les installations

06/12/2010Adrien Lecharpentier11

Web-app

Nécessite un serveur

d’application

Déploiement rapide et simple

Standalone

Pas de serveur d’application, port différent

Configurable en service (Windows)

Slave

A partir d’un « master »

Permet de distribuer le

travail

Page 12: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

3.2.1. Web-app

Hudson déployer dans un

serveur d’application web

(Tomcat)

06/12/2010Adrien Lecharpentier12

Page 13: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

3.2.2. Standalone

06/12/2010Adrien Lecharpentier13

java –jar hudson.war –httpPort=9090

Configurable en tant que service

Choix du dossier d’installation

Configuration du lancement dans « hudson.xml »

Page 14: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

3.2.3. Slave

06/12/2010Adrien Lecharpentier14

Démarrer à partir / par le maître

En ssh, jnpl, en commande, comme un service windows

Ne contient pas la configuration

N’a pas d’interface direct

Rattaché à un seul maître

Page 15: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

3.2. Les installations

06/12/2010Adrien Lecharpentier15

Différenciation dossier d’exécutable et dossier de

travail

HUDSON_HOME

Intérêt :

mise à jour du serveur d’application,

load balancing,

retrouver facilement les fichiers.

Page 16: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

3.2. Les

installations

Première page d’Hudson

06/12/2010Adrien Lecharpentier16

Page 17: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

4. Comment s’en sert-on ?

06/12/2010Adrien Lecharpentier17

1. Configuration du système

2. Création de « job » Hudson

3. Intégration des outils tiers

4. Distribution des « jobs »

5. Interprétation des résultats

Page 18: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

4.1. Configuration du système

06/12/2010Adrien Lecharpentier18

Utilise les variables d’environnement système

Configuration de base :

Nombre d’exécuteurs nombre de jobs en parallèle

Outils de base maven, ant, jdk, cvs, svn

Sécurité connexion d’utilisateurs (ldap, base interne…)

Serveur mail envoi de notification

Page 19: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

4.2. Création d’un « job » Hudson

06/12/2010Adrien Lecharpentier19

« job » :

partie ou intégralité d’un processus d’intégration,

un même projet peu avoir plusieurs job

Types de job :

Free-style permet de tout faire,

Maven s’adapte pour une projet maven,

Monitoring monitorer un processus extérieur

Multi-project permet de regrouper plusieurs job dans

une configuration unique.

Page 20: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

4.3. Intégration des outils tiers

06/12/2010Adrien Lecharpentier20

Référencement :

Connu dans le « PATH » de l’hôte,

Configuration général de Hudson.

Utilisation :

Ligne de commande Shell, Batch

Page 21: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

4.4. Distribution des jobs

06/12/2010Adrien Lecharpentier21

Intérêts :

Réduire la file d’attente sur un hôte,

Lancer l’intégration sur un environnement de test,

Garder la centralisation facilement.

Fonctionnement :

Installations de slaves

parc de slave Hudson

Etiquetage des slaves

critère de sélection pour l’intégration

Page 22: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

4.4. Distribution des jobs

06/12/2010Adrien Lecharpentier22

Produit 1

Produit 2

Produit 3 [64b]

Client Windows [Windows]

Serveur [Linux]

Client Linux [Linux]

Page 23: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

4.5. Interprétation des résultats

06/12/2010Adrien Lecharpentier23

Job non exécuté

Job en échec

Job en instabilité

Job en succès

Statut du job :

Icône clignote si build en cours

Page 24: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

4.5. Interprétation des résultats

06/12/2010Adrien Lecharpentier24

Santé du job : Différent du statut du job,

Se base sur des résultat de test, d’analyse, nombre de build réussi…

Définissable par le responsable du projet

Build >= 80%

60% >= Build > 80%

40% >= Build > 60%

20% >= Build > 40%

0% >= Build > 20%

Page 25: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

4.5. Interprétation des résultats

06/12/2010Adrien Lecharpentier25

Résultat de test sous forme de graphique

Régression

Page 26: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

5. Pour aller plus loin…

06/12/2010Adrien Lecharpentier26

1. L’enchaînement des jobs

2. Les plugins

Page 27: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

5.1. L’enchaînement des jobs

06/12/2010Adrien Lecharpentier27

Intérêt :

Permet de diviser un process long et dangereux en

petits morceaux « inoffensifs ».

Downstream/Upstream

Choix explicite du (des) job(s) à faire avant ou après

Dépendance snapshot

Sur projet maven uniquement

Construction sur le même Hudson (master)

Page 28: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

5.2. Les plugins

06/12/2010Adrien Lecharpentier28

Affiner le comportement de base :

Trigger,

Notification,

Présentation,

Tests,

Source Control Manager,

Environ 176 plugins officiels

http://ci.hudson-labs.org/view/Plugins/

Page 29: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

5.2.1. Installer un plugin

06/12/2010Adrien Lecharpentier29

Utiliser l’interface web :

Administration >> Plugin Management

A la main :

.hpi $HUDSON_HOME/plugins

Notification de mise à jour

Plugins officiels uniquement

Page 30: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

5.2.2. La création d’un plugin

06/12/2010Adrien Lecharpentier30

Projet Maven

Création du squelette :

mvn hpi:create

Difficultés :

Nom de méthodes fixés

Tester son plugin :

mvn hpi:run

Demanderai une autre présentation…

Page 31: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

Questions ?

Page 32: Hudson – Automatisation Tool · 2011. 3. 27. · 4.2. Création d’un «job » Hudson 19 Adrien Lecharpentier 06/12/2010 « job » : partie ou intégralité d’un processus d’intégration,

Liens utiles

06/12/2010Adrien Lecharpentier32

Sites internet

http://wiki.hudson-ci.org/display/HUDSON/Home

http://www.hudson-labs.org/

http://infradna.com/

SVN Hudson

svn://anonsvn.hudson-labs.org/trunk/hudson

Les plugins de Hudson:

http://wiki.hudson-ci.org/display/HUDSON/Plugins