RSS: Blog | Wiki | Forum

Buildbot

Un article de Easyneuf.

PageOutline

Sommaire

[modifier] BUILDBOT

L'esprit de Buildbot est de faire un master qui contient toutes les données nécessaires pour faire les tests :

  • update des sources
  • compilations
  • rapports

Ce master s'occupe de lancer les compilations sur des slaves. Ces slaves ont donc une configuration minimaliste.

[modifier] update des sources

Buildbot sait scruter les changements de source avec Mercurial. Il faut utiliser un hook que l'on met sur le dépot mercurial à scruter. Ce hook consiste en un appel à un script python qui se charge d'envoyer au master le changement. Il n'y a pas d'identification l'envoi se fait juste sur un port. Pour différencier les projets, nous envoyons un paramètre 'branch' correspondant au nom du dépôt.

Ce script s'appelle hgbuildbot.py. Il est fourni dans le répertoire de buildbot.

Exemple d'utilisation : le .hg/hgrc de 9buildroot

[paths]
default = http://hg.easyneuf.org/9buildroot

[hooks]
changegroup.buildbot = python:buildbot.changes.hgbuildbot.hook

[hgbuildbot]
master = 0dev:9989
branchtype = dirname

[modifier] configuration

Voir manuel de buildbot

[modifier] Projets et ressources

Le projet easyneuf est constitué de plusieurs projets. Le buildbot master se trouve sur la machine 0dev. Tous les fichiers nécessaires se trouvent dans /var/lib/buildbot pour les masters et les slaves.

Pour chaque slave on a créé 2 environnements chrootés différents :

Nom (schroot) Location Description
etch-9buildroot var/lib/chroot/etch-chroot Debian etch minimaliste pour compiler NeufOS(9buildroot)
etch-dev var/lib/chroot/etchdev-chroot Debian etch avec les paquets de développement pour compiler individuellement les différents projets (9mcc, minidesk, 9panel ...)

Voici la liste des projets et des slave importants :

projet slave Description
autobuild-easyneuf dev6 génération de l'image officielle à partir de 9buildroot-prod et autobuild
opengate dev3 image officiel pour l'opengate à partir de 9buildroot et du script build
autobuild-akeo dev8 génération de l'image officielle AKEO à partir de 9buildroot-prod et autobuild-akeo

[modifier] Mise en place des slaves

  • Installer buildbot 0.7.5
  • Installer schroot
  • Décompresser à la racine buildbot_chroots_conf.tgz qui contient les 2 chroots prévus pour buildbot. Attention, celui-ci modifie le script d'init de buildbot et le fichier de conf de schroot
  • ajouter /proc pour les chroots dans fstab
  • ajouter un shell valide à buildbot
  • modifier les uids buildbot pour qu'ils s'accordent au système hôte
  • modifier les paramètres de buildbot.tac dans /var/lib/buildbot/slave dans les chroot
  • configurer /etc/default/buildbot
  • mettre un cron pour effacer les vieux builds
  • lancer le tout
  • ouf !