Développer avec Subversion, Trac et Buildbot



Documents pareils
Serveur Subversion Debian GNU/Linux

Contrôle de la DreamBox à travers un canal SSH

Serveur DNS et DHCP couplé à LDAP Debian GNU/Linux

TP LINUX : MISE EN PLACE DU SERVEUR DE MESSAGERIE QMAIL

TP n 2 : Installation et administration du serveur ProFTP. Partie 1 : Fonctionnement du protocole FTP (pas plus de 15min)

Linux et le Shell. Francois BAYART. Atelier du samedi 20 Novembre

Automatisation de l administration système

sshgate Patrick Guiran Chef de projet support

Personnes ressources Tice. Académie de Rouen

WDpStats Procédure d installation

Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall

Projet Administration Réseaux

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Sauvegardes par Internet avec Rsync

GUIDE D'INSTALLATION ET DE CONFIGURATION MSCCV

Maintenance et gestion approfondie des Systèmes d exploitation Master 2 SILI. Année universitaire David Genest

Classe et groupe : 1P 3 SEN TRI. Ubuntu : serveur Contrôleur de Domaine (PDC) avec SAMBA

Bon ben voilà c est fait!

Plan global Outils de développement et compilation. Ce que l on veut éviter. Plan. Git : gestion de code source et versionnement.

Procédure d installation d AMESim 4.3.0

Table des matières Hakim Benameurlaine 1

Les différentes méthodes pour se connecter

Outils de développement collaboratif

Installation de Zabbix

CASE-LINUX MAIL - ROUNDCUBE

Guide de démarrage Intellipool Network Monitor

Ajout et Configuration d'un nouveau poste pour BackupPC

Retour d expérience sur Prelude

[ GLPI et OCS pour Gentoo 2006] ArtisanMicro. Alexandre BALMES

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

Serveur de travail collaboratif Michaël Hoste -

Gestion d identités PSL Exploitation IdP Authentic

TP LINUX : LINUX-SAMBA SERVEUR DE FICHIERS POUR UTILISATEURS WINDOWS

Table des matières. Date : Version : 29/06/ Objet : OpenVas 6.0

Guide Installation Serveur Extensive Testing

Serveur d impression CUPS

Formation subversion (svn) Marc-Olivier Buob

Installer Enterprise Miner 5.1 en SAS environnement Windows

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

A. Architecture du serveur Tomcat 6

Chapitre IX : Virtualisation

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Projet Semestre2-1SISR

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

Installation SQL Server 2005 Express sur le serveur

Mise en place d'un antivirus centralisé

Guide Installation Serveur Extensive Testing

I. Présentation du serveur Samba

ArcGis Server 10 (sur VM CentOS bits) DOCUMENT D INSTALLATION

WPKG Gestion de paquets pour Windows

Guide d installation de Gael

DEPLOIEMENT MICROSOFT WINDOWS

But de cette présentation. Contrôleur de domaine avec Samba (rédigé pour Ubuntu Server) Introduction. Samba: principes

L installation du module Webmail nécessite également quelques prérequis, à savoir :

PUPPET. Romain Bélorgey IR3 Ingénieurs 2000

Problématique. Techniques générales. Déploiement Windows. Déploiement Linux. Déploiement Mac OS X. Applications Windows. Applications Linux

Notes pour l'installation d'une version de Eprints sur une machine CentOS4.2 Stéphanie Lanthier Le jeudi 17 février 2006

Réalisation d un portail captif d accès authentifié à Internet

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

Manuel : Mise en place et déploiement de la solution

Open Source Job Scheduler. Installation(s)

Aide-Mémoire unix. 9 février 2009

Introduction...3. Objectif...3. Manipulations...3. Gestion des utilisateurs et des groupes...4. Introduction...4. Les fichiers de base...

e-obs : Conception et utilisation Rémy Decoupes Ether // ums3365

TP 7, 8 & 9 : Installation et Gestion de GLPI et Télédéploiement SISR 1 HUBERT JULIEN LABBE RICHARD DAY MICKAEL DOGNY CHRISTOPHE

INSTALLATION NG V2.1 D OCS INVENTORY. Procédure d utilisation. Auteur : GALLEGO Cédric 23/10/2014 N version : v1

Environnement Informatique EMSE Linux

Module pour la solution e-commerce Magento

Guide d installation de SugarCRM Open Source version 4.5.1

Machine virtuelle W4M- Galaxy : Guide d'installation

Procédure d'installation de Oracle Client pour Windows

Request Tracker pour les Nuls. Yves Agostini - YVESAGO

Gérard Castagnoli OSU PYTHEAS 25/06/2013 VVT2013 1

1 Configuration des Fichiers Hosts, Hostname, Resolv.conf

Sauvegarde de postes clients avec BackupPC

Les systèmes de gestion de version

PARAMETRER SAMBA 2.2

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

Systèmes de tickets avec RT

Oracle WebLogic Server (WLS) 11gR1 ( et ) Installation sur Oracle Linux 5 et 6 Hypothèses Installation Oracle Linux 5 (OL5)

SUGARCRM Sugar Open Source Guide d Installation de French SugarCRM Open Source Version 4.2

Tutoriel compte-rendu Mission 1

GEST_INSTANCES APPLICATION DE GESTION DES INSTANCES ET REUNIONS EN EPLE ETABLISSEMENT PUBLIC LOCAL D ENSEIGNEMENT

Installation du Hub. Installation du Hub. 1. Description de l installation. by LegalBox. 2 types de serveur sont à installer :

Les commandes relatives aux réseaux

Configuration de Gentoo 12.x

Debian Lenny - Virtualisation avec Libvirt/KVM Debian GNU/Linux

Installation d ORACLE 10g sous Debian Etch

C.M. 1 & 2 : Prise en main de Linux

Builds et tests Utilisation de CMake et de Dart

Installation du transfert de fichier sécurisé sur le serveur orphanet

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Couche application. La couche application est la plus élevée du modèle de référence.

équipement radio Procédure

Présentation du SC101

Installation des outils OCS et GLPI

Déploiement de SAS Foundation

Transcription:

Développer avec Subversion, Trac et Buildbot version 1.1 Date: 8 juin 2006 Olivier Ramonat <olivier.ramonat@netelem.com> Pascal Obry <pascal@obry.net> 1

Table des matières 1 Introduction 3 2 Préparer le système 3 2.1 Installation sous GNU/Linux et MacOS............ 3 2.1.1 Créer les comptes d utilisateurs............. 3 2.2 Installation sous Windows.................... 3 2.2.1 Installation de Cygwin.................. 4 2.2.2 Créer les comptes d utilisateurs............. 4 2.2.3 Configurer SSH...................... 4 2.2.4 Installation de Trac................... 4 2.2.5 Installation de Buildbot................. 6 2.2.6 Création de services Windows.............. 6 2.2.7 Note finale........................ 7 3 Paramétrer Subversion 7 3.1 Créer un dépôt Subversion.................... 7 3.2 Accès au dépôt en ssh...................... 8 3.3 Hook Subversion......................... 8 3.3.1 pre-commit hook..................... 8 3.3.2 post-commit hook.................... 9 4 Trac 9 4.1 Créer un projet sous Trac.................... 9 4.2 Démarrer Trac.......................... 9 4.3 De Subversion aux tickets de Trac............... 10 5 Automatiser avec Buildbot 10 5.1 Configurer Buildbot....................... 10 5.1.1 Pré-requis......................... 10 5.1.2 Configurer le serveur................... 11 5.1.3 Créer un client Buildbot................. 13 5.1.4 De Subversion à Buildbot................ 14 5.1.5 Projets multiples..................... 14 2

6 Annexe 15 6.1 Subversion hooks......................... 15 6.1.1 pre-commit........................ 15 6.1.2 post-commit....................... 15 6.1.3 Exemples......................... 16 6.2 Buildbot.............................. 16 3

1 Introduction Ce document porte sur l installation sur un serveur 12 d une suite d outils de gestion de projet : Subversion 3 pour le contrôle de version ; Trac 4 pour la gestion de projet : Wiki, système de gestion de tickets et suivi de l évolution des sources (quand il est couplé à Subversion) ; et Buildbot pour l automatisation du packaging, des compilations et des tests. Ces trois outils peuvent interagir et permettent ensemble d améliorer la qualité et la rapidité d un développement logiciel. Installés sur un serveur, ils peuvent être partagés par différents projets très facilement. Il est possible de réaliser l installation de plusieurs manières. Ce document propose un modèle d installation et d administration qui se veut cohérent, simple et sécurisé. 2 Préparer le système 2.1 Installation sous GNU/Linux et MacOS 2.1.1 Créer les comptes d utilisateurs Trois comptes système doivent être créés sur le serveur. Cette opération est réalisée par l utilisateur root avec la commande adduser : $ a ddus er svn $ adduser t r a c $ adduser b u i l d b o t 2.2 Installation sous Windows Il est possible d installer Subversion, Trac et Buildbot sous Windows 2000/XP en utilisant l environnement Cygwin 5. 1 Testé sous GNU/Linux et MacOs 2 Testé sous Windows/Cygwin, procédure à ajuster pour cette plateforme 3 Subversion est le remplaçant de CVS, il est utilisé par de nombreux projets tels que Python, Apache, GCC ou KDE 4 Trac est un équivalent de Sourceforge 5 CYGWIN est une couche d émulation POSIX pour Windows 4

2.2.1 Installation de Cygwin L installation est assez simple et automatisée : récupérer setup.exe depuis http://www.cygwin.com installer les modules suivants : Base (sélectionné par défaut car obligatoire) Admin - cygrunsrv Devel - gcc-core Devel - make Devel - Subversion Net - openssh Python - python Utils - rebase lancer une console Cygwin et exécuter rebaseall 2.2.2 Créer les comptes d utilisateurs Créer les comptes utilisateurs svn, trac, buildbot depuis l interface standard de Windows. Depuis une console Cygwin créer les fichiers /etc/passwd et /etc/group correspondant : $ mkpasswd l > / e t c /passwd $ mkgroup l > / e t c / group 2.2.3 Configurer SSH Cette étape va permettre de se connecter à distance et de façon sécurisée à la machine Windows. C est aussi le protocole recommandé ici pour Subversion. $ ssh host c o n f i g Aux questions qui vous sont posées, il faut répondre : privilege separation : yes create local user sshd : yes install sshd as a service : yes CYGWIN= : ntsec 2.2.4 Installation de Trac Cygwin ne fournit pas de paquet tout préparé pour Trac. L installation est un peu délicate car elle requière plusieurs modules : 5

Sqlite Un paquet binaire sqlite-2.8.14-1.tar.bz2 pour Cygwin est disponible ici : http://sourceforge.net/project/showfiles.php?group_ id=99645&package_id=121049. $ cd / $ t a r x f j s q l i t e 2.8.14 1. t a r. bz2 pysqlite (testé avec la version 2.1.12) Installation en utilisant le module python setup.py. $ python setup. py b u i l d $ python setup. py i n s t a l l Clearsilver (testé avec la version 0.10.2) Installation en utilisant la procedure standard suivante : $. / c o n f i g u r e $ make $ make i n s t a l l Cependant il n est pas possible de compiler le fichier neo_date.c avec le compilateur Cygwin. Un autre problème vient du linker sous Cygwin qui est sensible à l ordre des bibliothèques. Le patch suivant permet de corriger ces problèmes : u t i l / neo date. c. o r i g Mon Mar 6 1 5 : 0 2 : 2 3 2006 u t i l / neo date. c Mon Mar 6 1 5 : 0 0 : 1 7 2006 83,89 83,93 return ttm >tm gmtoff ; #e l i f d e f i n e d (HAVE TZNAME) long tz ; + #i f n d e f CYGWIN tz = timezone ; + #e l s e + tz = timezone ; + #e n d i f i f ( ttm >t m i s d s t ) tz += 3600; return tz ; python/ setup. py. o r i g Mon Mar 6 1 5 : 3 8 : 0 3 2006 python/ setup. py Mon Mar 6 1 5 : 3 8 : 4 5 2006 5,11 VERSION = 0. 1 0. 2 INC DIRS = [.. / ] 6

! LIBRARIES = [ neo c g i, neo cs, neo u t l ] LIB DIRS = [.. / l i b s ] CC = gcc LDSHARED = gcc shared 5,11 VERSION = 0. 1 0. 2 INC DIRS = [.. / ]! LIBRARIES = [ neo c g i, neo cs, neo u t l, z ] LIB DIRS = [.. / l i b s ] CC = gcc LDSHARED = gcc shared Trac (testé avec la version 0.9.3) Installation en utilisant le module python setup.py. $ python setup. py b u i l d $ python setup. py i n s t a l l Il est important de vérifier que le compilateur GCC/C de Cygwin est le premier dans le PATH. Ce compilateur est utilisé lors de la phase de construction de Clearsilver. 2.2.5 Installation de Buildbot Cygwin ne fournit pas de paquet tout préparé pour Buildbot. Cependant l installation est simple. Buildbot comporte un document nommé INSTALL qui décrit comment procéder. Généralement la procédure est la suivante : récupérer l archive source décompresser l archive construire le(s) module(s) $ python setup. py b u i l d installer le(s) module(s) $ python setup. py i n s t a l l Il est important de vérifier que le compilateur GCC/C de Cygwin est le premier dans le PATH. Ce compilateur est utilisé lors de la phase de construction de Twisted et Buildbot. 2.2.6 Création de services Windows Il est possible d installer Trac et Buildbot comme services Windows. Ceci a l avantage que ces applications seront lancées automatiquement au redémarrage du système. 7

La première étape est d ajouter c :\cygwin\bin au PATH du système via l interface standard de Windows. La variable système CYGWIN positionnée avec tty ntsec doit aussi être ajoutée. Pour créer un service on utilise l outil Cygwin cygrunsrv. Ceci doit être fait après l intallation de Trac et Buildbot comme décrit dans la suite de ce document. $ cygrunsrv I b u i l dbot c /home/ buildbot / b u i l d r o o t a no save y b u i l dbot. tac e CYGWIN= tty n t s e c p / usr / bin / twistd u b u ildbot w buildbot pwd Pour démarrer le service : $ cygrunsrv s t a r t buildbot Pour obtenir une description de tous les paramètres : $ cygrunsrv help 2.2.7 Note finale L installation d outils du monde libre, développés principalement pour GNU/Linux, sous Windows en utilisant Cygwin est possible et assez simple. Il faut cependant garder en tête que quelques ajustements peuvent être nécessaires en fonction de la configuration de la machine. Cette section a pour principal objectif de guider l administrateur dans son installation en présentant les étapes propres à l environnement Cygwin. Le reste du document est indépendant de la plate-forme. 3 Paramétrer Subversion Toutes les opérations se feront sur le compte svn. 3.1 Créer un dépôt Subversion Pour créer le dépôt my proj, utiliser la commande $ svnadmin c r e a t e fs type=f s f s my proj Subversion peut stoquer sa base de données en deux formats différents : Berkeley DB FSFS (développé par Subversion et fondé sur le système de fichiers) Il est conseillé d utiliser FSFS qui est plus stable en cas d erreur de Subversion. 8

3.2 Accès au dépôt en ssh Pour utiliser le protocol svn+ssh il faut disposer d un compte utilisateur sur le serveur. Pour automatiser la connexion à l aide de script, une solution simple est de créer une clé RSA sans mot de passe (pass phrase) et de l utiliser pour s authentifier sur le serveur. Création de la clé rsa : $ ssh keygen t r s a Envoi de la clé sur le serveur server addr : $ ssh copy id i /home/ user /. ssh / i d r s a. pub user@server addr L outil ssh-copy-id n existe pas pour Cygwin il est donc nécessaire de d ajouter manuallement le contenu du fichier /home/user/.ssh/id_rsa.pub au fichier user@server_addr:.ssh/authorized_keys. Récupération des sources du projet my proj : $ svn co svn+ssh : / / user@server addr /home/ svn / my proj Il n y a pas besoin de founir de mot de passe. 3.3 Hook Subversion Il est possible de faire exécuter automatiquement des scripts par Subversion, en les plaçant dans le répertoire hook du dépôt. 3.3.1 pre-commit hook Le script hooks/pre-commit est lancé à chaque commit 6. Il est donc possible de vérifier certaines conditions sur les fichiers envoyés avant de les accepter. Par exemple, il peut être utile de tester le bon respect des règles de style élémentaires et des règles de syntaxe des fichiers lorsque le compilateur le permet 7. Il est possible aussi d analyser le log de la transaction afin d imposer qu un numéro de ticket Trac soit renseigné. Ceci permet de garantir une traçabilité complète entre les modifications effectuées dans le code et le système de gestion de ticket. La traçabilité est un point important pour l assurance qualité logiciel. 6 Un commit est un envoi de modification des sources du projet 7 Par exemple l option -gnatc du compilateur GNAT pour le langage Ada 9

3.3.2 post-commit hook Le script hooks/post-commit est couramment utilisé pour l envoi de notification par mail. Il peut aussi servir à l intégration du log de la transaction dans Trac (section 4.3) ou pour exécuter des compilations automatiques avec Buildbot (section 5.1.4). Dans la suite de ce document il est supposé que le dépôt Subversion des projets utilise une structure standard. my proj trunk branches r e l e a s e 1 r e l e a s e 2 4 Trac Toutes les opérations se feront sur le compte trac. 4.1 Créer un projet sous Trac La création du projet my proj sous Trac se fait à l aide de l outil tracadmin. Création du projet sous le répertoire /home/trac/rootenv $ trac admin rootenv / my proj i n i t e n v P r o j e c t Name [My P r o j e c t ]> My P r o j e c t Database connection s t r i n g [ s q l i t e : db/ t r a c. db]> Path to r e p o s i t o r y [ / var / svn / test ]> /home/ svn / my proj Templates d i r e c t o r y [ / opt / local / share / t r a c / templates ]> La seule chose à faire est donc de nommer le projet et d indiquer l adresse du dépôt Subversion (qui doit être sur le même serveur). 4.2 Démarrer Trac La commande pour lancer Trac est : $ tracd a, u s e r s. h t d i g e s t, TracRealm p 8000 e /home/ t r a c / rootenv / Où users.htdigest est créé par la commande : 10

$ h t d i g e s t c u s e r s. h t d i g e s t TracRealm user Utiliser l authentification permet de garantir que les modifications sur le Wiki Trac ne soient pas anonymes, toujours pour garantir une bonne traçabilté des informations. 8000 est le numéro du port. Votre server Trac hébergé sur le serveur my server doit maintenant être accessible à l adresse : http ://my server :8000 4.3 De Subversion aux tickets de Trac Un ticket sur Trac peut être un rapport de bug, une demande pour une nouvelle fonctionnalité... Trac attribue automatiquement un numéro à chaque ticket. Pour relier automatiquement les messages de logs d une transaction Subversion à un ticket émis sur Trac, il faut créer un hook Subversion. Le script python scripts/trac-post-commit-hook repère, dans le log Subversion, les chaînes refs #11, #12 ou fixes #14 et ajoute, dans l historique des tickets correspondants sous Trac, le log de la transaction. Lorsque le log contient fixes, le billet sous Trac est automatiquement fermé. Pour plus de contrôle, on peut utiliser le script trac-pre-commit-hook pour rejeter toute transaction Subversion ne contenant pas un numéro de ticket. 5 Automatiser avec Buildbot 5.1 Configurer Buildbot 5.1.1 Pré-requis Twisted http ://twistedmatrix.com/trac/wiki/twistedproject Buildbot http ://sourceforge.net/projects/buildbot/ Récupérer l archive TwistedSumo puis installer : ZopeInterface Twisted TwistedWeb TwistedMail (optionnel) Sous debian : 11

$ apt get i n s t a l l python t w i s t e d python twisted web Récupérer Buildbot et l installer. La version de Buildbot testée, Buildbot-0.7.3, ne permet pas de partager un serveur Buildbot entre différents projets. Il est néanmoins possible de modifier ce comportement en surchargeant une classe (code à placer dans master.cfg, voir section 5.1.5). Cependant, il y aura certaines limitations. Il ne sera pas, par exemple, possible de créer une page de suivi par projet. 5.1.2 Configurer le serveur En tant qu utilisateur Buildbot, vous devez exécuter : $ mkdir /home/ b u i l d bot / b u i l d r o o t $ b u i l d b o t master /home/ buildbot / b u i l d r o o t $ cd /home/ b u i l d b o t / b u i l d r o o t $ cp Makefile. sample m a k e f i l e Il faut récuperer le fichier master.cfg et l éditer suivant votre configuration. Définition des paramètres de connexion : svnserver doit être accessible de tous les clients Buildbot ici à l adresse my server. s v n s e r v e r = svn+ssh : / / buildbot@my server /home/ svn / port = 9989 # f o r s l a v e s wport = 8010 # f o r web i n t e r f a c e Déclaration des clients Buildbot : Il faut ensuite définir le nom et le mot de passe de tous les clients Buildbot qui se connecteront au serveur. Ici bot1 et bot2 : # bot machines used f o r the b u i l d s c [ bots ] = [ ( bot1, bot passwd ), ( bot2, bot passwd ) ] Configuration d un projet : 12

Compilation à chaque modification des sources : Ici, la classe RepositoryScheduler est utilisée à la place de la classe Scheduler. Un paramètre supplémentaire repository est défini pour que Buildbot gère de multiples projets (section 5.1.5). s trunk=repositoryscheduler (name= trunk only, branch= trunk, treestabletimer =1 60, buildernames =[ test l i n u x, test windows ], r e p o s i t o r y= /home/ svn / t e s t ) s b1=repositoryscheduler (name= r e l e a s e 1, branch= branches / r e l e a s e 1, treestabletimer =1 60, buildernames =[ test l i n u x, test windows ], r e p o s i t o r y= /home/ svn / t e s t ) c [ s c h e d u l e r s ]. append ( s trunk ) c [ s c h e d u l e r s ]. append ( s b1 ) Le projet est reconstruit lorsqu une modification a été faite sous Subversion, et qu aucun autre changement n a eu lieu depuis treestabletimer. Il est important de noter que Buildbot gère parfaitement les différentes branches d un projet. Ci-dessus un scheduler a été défini pour la branche principale du projet (trunk) et pour la branche branches/release-1. Commandes à exécuter : Dans le cas où le projet est récupéré à partir de l url baseurl, où on utilise un./configure, et où la compilation se fait par la commande make et les tests par la commande make check, il faudra définir : t e s t s t e p s = [ s ( step.svn, mode= update, baseurl=s v n s e r v e r + t e s t / ), s ( step. Configure ), s ( step. Compile ), s ( step. Test, command=[ make, check ] ) ] t e s t f = f a c t o r y. BuildFactory ( t e s t s t e p s ) Affectation des clients pour ce projet : Les deux clients Buildbot qui construiront le projet test sont bot1 et bot2. Ils apparaîtront sous testlinux et test-windows dans l interface web du serveur Buildbot. b o t 1 b u i l d e r = { name : test l i n u x, 13

slavename : bot1, b u i l d d i r : test l i n u x, f a c t o r y : t e s t f, } b o t 2 b u i l d e r = { name : test windows, slavename : bot2, b u i l d d i r : test windows, f a c t o r y : t e s t f, } c [ b u i l d e r s ]. append ( b o t 1 b u i l d e r ) c [ b u i l d e r s ]. append ( b o t 2 b u i l d e r ) Tests journaliers : Un test supplémentaire aura lieu tous les soirs à 23H45 sur la branche principale. t e s t n i g h t l y=nightly ( t e s t n i g h t l y, [ t e s t l i n u x ], hour =23, minute =45, branch= trunk ) c [ s c h e d u l e r s ]. append ( t e s t n i g h t l y ) Un mail sera envoyé à urladmin@my server pour l in- Notification : former du résultat. c [ s t a t u s ]. append ( mail. M a i l N o t i f i e r ( b u i l d e r s =[ t e s t l i n u x, t e s t windows ], fromaddr= buildbot@my server, e x t r a R e c i p i e n t s =[ admin@my server ] ) Lancer le serveur : $ make s t a r t 5.1.3 Créer un client Buildbot L installation d un client Buildbot ne nécessite pas le module pythontwisted-web. Installer Buildbot sur un autre poste et créer un client : Créer un répertoire buildroot, indiquer l adresse du serveur Buildbot server addr (le port par défaut est 9989) ainsi que le nom et le mot de passe du client. 14

$ b uildbot s l a v e b u i l d r o o t s e r v e r a d d r :9989 <name> <passwd> ATTENTION : Pour que le client Buildbot puisse récupérer la dernière version Subversion par le protocole svn+ssh la connexion doit être automatique. Vérifier que l utilisateur qui lance le client peut bien se connecter automatiquement (utilisation de clé rsa cf section 3.2 page 8). 5.1.4 De Subversion à Buildbot Le script python scripts/trac-post-commit-hook doit être appelé par Subversion depuis hooks/post-commit. Après chaque commit, le serveur Buildbot ajoute une reconstruction du projet (dans la branche où le changement a eu lieu) dans sa file d attente. 5.1.5 Projets multiples Pour étendre la gestion de Buildbot à plusieurs projets, il est possible de créer une nouvelle classe RepositoryScheduler héritant de la classe Scheduler de Buildbot. Lorsqu un hook Subversion notifie au serveur un changement dans un projet, seul le projet concerné est reconstruit. class RepositoryScheduler ( Scheduler ) : Extend Scheduler to allow m u l t i p l e p r o j e c t s def i n i t ( s e l f, name, branch, treestabletimer, buildernames, r e p o s i t o r y, f i l e I s I m p o r t a n t=none ) : Override Scheduler. i n i t Add a new parameter : r e p o s i t o r y Scheduler. i n i t ( s e l f, name, branch, treestabletimer, buildernames, f i l e I s I m p o r t a n t ) s e l f. r e p o s i t o r y = r e p o s i t o r y def addchange ( s e l f, change ) : C a ll Scheduler. addchange only i f the r e p o s i t o r y i s modified # check to make sure the r e p o s i t o r y matches! cs = change. comments. s p l i t ( ) i f l e n ( cs ) > 0 : 15

repo = cs [ 0 ] l o g. msg( checking %s vs %s % ( repo, s e l f. r e p o s i t o r y ) ) i f repo!= s e l f. r e p o s i t o r y : l o g. msg( %s i g n o r i n g r e p o s i t o r y %s % ( s e l f, repo ) ) return # c a l l our parent s i n c e t h i s on the c o r r e c t r e p o s i t o r y Scheduler. addchange ( s e l f, change ) 6 Annexe 6.1 Subversion hooks De nombreuses fonctions pour les scripts pre-commit et post-commit sont fournies dans le script scripts/svn-hook-support.sh. 6.1.1 pre-commit Le script scripts/svn-hook-support.sh contient les différentes fonctions qui peuvent être employées dans les hooks de Subversion. Fonction check style permet de vérifier quelques règles de syntaxe et de style sur les fichiers modifiés. Nécessite Style Checker (http://www.obry. net/contrib.html). Fonction log not empty teste si le message de log a bien été rempli. Fonction trac pre commit record log teste si le message de log contient une référence vers un ticket de Trac. Cette fonction utilise le script python scripts/trac-pre-commit-hook. 6.1.2 post-commit Fonction trac post commit record log insère le message de log dans l historique du ticket de Trac. Cette fonction utilise le script python scripts/ trac-post-commit-hook. Fonction send mail post commit envoie un mail à chaque transaction. 16

Fonction buildbot post commit notifie le serveur Buildbot qu une transaction a eu lieu. Cette fonction utilise le script python scripts/svn_buildbot. py. 6.1.3 Exemples Deux exemples de scripts hooks sont fournis : hooks/pre-commit hooks/post-commit 6.2 Buildbot Un exemple de configuration pour le serveur de Buildbot est aussi présent : scripts/buildbot/master.cfg. 17