Comment installer Buildbot sur Ubuntu 16.04

introduction

Buildbot est un système d’intégration continue basé sur Python permettant d’automatiser les processus de création, de test et de publication de logiciels. Il utilise la Twisted[Twisted library de Python pour gérer la communication asynchrone entre un maître de build et un ou plusieurs ouvriers afin de faciliter le test de builds sur plusieurs plates-formes. Buildbot est hautement configurable et n’émet que peu d’hypothèses sur le fonctionnement du processus de génération, ce qui le rend approprié pour les processus de construction complexes ou les projets nécessitant que leurs outils évoluent avec les besoins uniques du projet.

Dans ce tutoriel, nous installerons et configurerons un buildmaster Buildbot et un opérateur sur le même ordinateur.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

Lorsque le serveur est configuré, vous êtes prêt à suivre.

Étape 1 - Installation de Buildbot

Le projet Buildbot recommande l’utilisation de Python Package Index, pip, pour installer Buildbot afin d’obtenir la version la plus récente, souvent plusieurs versions supérieure à celle disponible dans les packages Ubuntu.

Nous commencerons par un utilisateur + sudo et utiliserons` + apt-get update` pour nous assurer de disposer de la dernière liste de paquets:

sudo apt-get update

Ensuite, nous installerons pip lui-même:

sudo apt-get install python-pip

Une fois que pip est disponible, nous l’utilisons pour installer le paquet Buildbot, qui comprend le maître et l’agent de travail, ainsi que d’autres dépendances, y compris celles requises par l’interface Web. Pip crée des fichiers + .cache + dans le répertoire de base de l’utilisateur qui l’exécute. Nous utiliserons le drapeau + sudo + s + -H + `pour placer ces fichiers au bon endroit:

sudo -H pip install 'buildbot[bundle]'

En fonction de la vitesse de votre serveur, cela peut prendre un peu. La fin de la sortie d’une installation réussie devrait ressembler à ceci:

Output. . .
Successfully installed Automat-0.6.0 Jinja2-2.10 MarkupSafe-1.0
PyJWT-1.6.0 Tempita-0.5.2 Twisted-17.9.0 attrs-17.4.0 autobahn-18.3.1
buildbot-1.0.0 buildbot-console-view-1.0.0 buildbot-grid-view-1.0.0
buildbot-waterfall-view-1.0.0 buildbot-worker-1.0.0 buildbot-www-1.0.0
constantly-15.1.0 decorator-4.2.1 future-0.16.0 hyperlink-18.0.0 idna-2.6
incremental-17.5.0 pbr-3.1.1 python-dateutil-2.6.1 six-1.11.0 sqlalchemy-1.2.5
sqlalchemy-migrate-0.11.0 sqlparse-0.2.4 txaio-2.9.0 zope.interface-4.4.3

Il peut également afficher une recommandation pour mettre à niveau pip lui-même:

Output. . .
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Bien que cela n’affectera pas notre installation Buildbot, nous allons prendre un moment pour passer à la dernière version de pip:

sudo -H pip install --upgrade pip
OutputCollecting pip
Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
  100% |████████████████████████████████| 1.3MB 768kB/s
Installing collected packages: pip
Found existing installation: pip 8.1.1
  Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr
Successfully installed pip-9.0.1

Enfin, nous vérifierons l’installation de Buildbot en vérifiant la version:

buildbot --version
OutputBuildbot version: 1.0.0
Twisted version: 17.9.0

Dans les conditions préalables du didacticiel, nous avons configuré un pare-feu UFW pour autoriser uniquement le trafic SSH. Nous allons vérifier le statut:

sudo ufw status
OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Buildbot utilise le port 8010 pour l’interface Web, ce qui n’est pas autorisé, nous allons donc l’ouvrir maintenant.

sudo ufw allow 8010

Ensuite, nous ajouterons un utilisateur système dédié et un groupe pour exécuter les services Buildbot:

sudo addgroup --system buildbot
sudo adduser buildbot --system --ingroup buildbot --shell /bin/bash

Enfin, nous allons nous connecter en tant que nouvel utilisateur pour installer Buildbot:

sudo --login --user buildbot

Cela nous connectera en tant qu’utilisateur + buildbot + et nous placera dans le répertoire + / home / buildbot +, où nous allons configurer notre maître et notre ouvrier:

Étape 2 - Configuration du maître

Nous allons utiliser la commande buildbot + create-master + suivie de la valeur du répertoire de base:

buildbot create-master ~/master
Outputmkdir /home/buildbot/master
creating /home/buildbot/master/master.cfg.sample
creating database (sqlite:///state.sqlite)
buildmaster configured in /home/buildbot/master

Ensuite, nous copierons + master.cfg.sample + dans + + master.cfg + et laisserons l’original en place pour référence:

cp ~/master/master.cfg.sample ~/master/master.cfg

Ensuite, nous éditerons le fichier pour nous permettre d’atteindre l’interface Web à partir d’un ordinateur local.

nano ~/master/master.cfg

Pour accéder à l’interface Web à partir d’un ordinateur de bureau ou d’un autre périphérique, nous allons changer le + buildbotURL + de + localhost + en l’adresse IP ou le nom de domaine du serveur. Nous définirons également la stratégie de rapport d’utilisation. D’autres valeurs de configuration importantes sont définies dans + master.cfg +, mais nous allons conserver le reste des valeurs par défaut pour le moment.

Au bas du fichier, localisez la ligne + buildbotURL + et remplacez + + localhost + par l’adresse IP ou le nom de domaine de votre site:

~ / master / master.cfg

c['buildbotURL'] = "http://:8010/"

Ensuite, en bas du fichier, définissez la valeur de la directive + buildbotNetUsageData +. Ceci définit si Buildbot transmettra des statistiques d’utilisation aux développeurs pour aider à améliorer l’application. Vous pouvez définir ceci sur + None + pour désactiver cette option. Si cela ne vous dérange pas de renvoyer des informations de base sur votre utilisation, utilisez plutôt la chaîne " basic ". + Vous pouvez trouver plus d’informations sur ce paramètre dans la documentation de configuration globale de Buildbot:

~ / master / master.cfg

c['buildbotNetUsageData'] = None
# To send back basic information, use this instead:
#c['buildbotNetUsageData'] = 'basic'

Lorsque vous avez modifié le + 'buildbotURL' + et ajouté la ligne + buildbotNetUsageData +, enregistrez et quittez le fichier.

Vérifiez la configuration du maître en tapant:

buildbot checkconfig ~/master

Vous recevrez une sortie se terminant par le message suivant si la syntaxe est correcte:

Output. . .
Config file is good!

Si la sortie indique des erreurs de syntaxe, revenez en arrière et vérifiez à nouveau le fichier. Une fois que la commande + checkconfig + indique le succès, démarrez le maître:

buildbot start ~/master

Lorsque le redémarrage est réussi, vous devriez recevoir la confirmation suivante:

OutputFollowing twistd.log until startup finished..
The buildmaster appears to have (re)started correctly.

Enfin, visitons le site dans un navigateur Web sur le port 8010 à l’installation + buildbotURL + configurée:

+ http: //: 8010 / +

image: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-welcome.png [Capture d’écran de l’écran de bienvenue de Buildbot]

Maintenant que le maître est en cours d’exécution et que nous avons vérifié que nous pouvons accéder à l’interface Web, nous allons créer l’exemple de travailleur.

Étape 3 - Configuration d’un travailleur

La relation entre un maître et un travailleur est établie lorsqu’un nom et un mot de passe de travailleur dans le fichier + master.cfg + correspondent au nom et au mot de passe d’un travailleur configuré pour utiliser le maître.

Dans cette étape, nous allons créer et configurer un ouvrier en appelant la commande + buildbot-worker + s + create-worker + `et en lui transmettant quatre paramètres:

  • + worker + est le nom du répertoire dans lequel les paramètres du worker seront stockés

  • + localhost + est l’adresse où le maître du travailleur s’exécute

  • + exemple-worker + est le nom du travailleur et doit l’identifier de manière unique dans le fichier + ~ / master / master.cfg +.

  • + pass + est le mot de passe de l’opérateur et ce mot de passe doit correspondre à la valeur dans + ~ master / master.cfg +.

buildbot-worker create-worker ~/worker localhost example-worker pass
Outputmkdir /home/buildbot/worker
mkdir /home/buildbot/worker/info
Creating info/admin, you need to edit it appropriately.
Creating info/host, you need to edit it appropriately.
Not creating info/access_uri - add it if you wish
Please edit the files in /home/buildbot/worker/info appropriately.
worker configured in /home/buildbot/worker

Lorsque le travailleur se connecte pour la première fois, il envoie les fichiers du répertoire + info + au maître de build où il s’exécute. Ils seront affichés dans l’interface Web pour donner aux développeurs plus d’informations sur les échecs de test.

Nous allons les configurer maintenant. Tout d’abord, ouvrez le fichier contenant le courrier électronique de l’administrateur, supprimez l’exemple de ligne, + Votre nom ici <admin@votre adresse.invalide> + et remplacez-le par votre nom et votre adresse électronique.

nano ~/worker/info/admin

~ / worker / info / admin

<>

Lorsque vous avez terminé, enregistrez et quittez le fichier.

Le fichier + info / host +, par convention, fournit le système d’exploitation, la version, la taille de la mémoire, la vitesse du processeur, les versions des bibliothèques appropriées installées et enfin la version de Buildbot s’exécutant sur le poste de travail.

Ouvrez le fichier et collez les informations pertinentes en mettant à jour le contenu de l’exemple en fonction des besoins de votre système:

nano ~/worker/info/host

Mettez à jour les informations que vous utilisez pour refléter les spécificités de votre système:

~ / worker / info / host

Ubuntu 16.04.2 2GB Droplet - Buildbot version: 1.0.0 - Twisted version: 17.1.0

Lorsque vous avez terminé, enregistrez et quittez. Enfin, démarrez le travailleur:

buildbot-worker start ~/worker
OutputFollowing twistd.log until startup finished..
The buildbot-worker appears to have (re)started correctly.

Maintenant que le maître et l’utilisateur sont configurés et en cours d’exécution, nous allons exécuter une version de test.

Étape 4 - Exécution d’une version de test

Pour lancer une version de test, ouvrez le menu «Builds» de l’interface Web, puis sélectionnez «Workers». L’exemple de travailleur et les informations que nous avons définies dans + info / admin + et + info / host + devraient être affichés. À partir de là, nous pouvons cliquer sur le constructeur par défaut, «test d’exécution», pour forcer la construction.

image: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-workers.png [Capture d’écran de l’écran Buildbot’s Workers]

L’écran «Runtests» contiendra peu d’informations jusqu’à ce que la première demande de construction soit faite. Nous allons en forcer un maintenant en cliquant sur le bouton «forcer» dans le coin supérieur droit de l’écran:

image: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buldbot-force.png [Capture d’écran montrant le bouton de force]

Cela fera apparaître une boîte de dialogue vous permettant de saisir des informations sur la construction forcée. + image: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-info.png [Capture d’écran de Buildbot’s force build popup]

Pour cette construction de test, nous laisserons les champs vides et cliquez sur le bouton «Démarrer la construction» dans la fenêtre contextuelle. Notez que si vous entrez une valeur dans le champ “Votre nom”, celle-ci doit contenir une adresse électronique valide.

Dans quelques secondes, la construction devrait se terminer avec succès:

image: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-success.png [Capture d’écran montrant la construction réussie]

Vous pouvez explorer les détails de chaque étape de la construction en cliquant sur le numéro ou la flèche en regard de son nom:

image: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-build-details.png [entrez la description de l’image ici]

Vous avez peut-être remarqué qu’il n’était pas nécessaire de vous connecter pour exécuter cette construction. Par défaut, tout le monde peut accéder aux fonctions administratives. Par conséquent, avant de terminer, nous allons prendre un moment pour verrouiller cette fonction et créer un compte utilisateur. Pour en savoir plus sur les options disponibles dans [Documentation d’autorisation de Buildbot] (http://docs.buildbot.net/current/developer/authz.html).

Ouvrez à nouveau le fichier + master.cfg +:

nano ~/master/master.cfg

Au bas du fichier, ajoutez les lignes suivantes en modifiant le nom d’utilisateur et le mot de passe.

Fichier: ~ / master / master.cfg

. . .
c['www']['authz'] = util.Authz(
      allowRules = [
          util.AnyEndpointMatcher(role="admins")
      ],
      roleMatchers = [
          util.RolesFromUsername(roles=['admins'], usernames=[''])
      ]
)
c['www']['auth'] = util.UserPasswordAuth({'': ''})

Lorsque vous avez terminé, exécutez une autre vérification de la syntaxe sur le fichier:

buildbot checkconfig ~/master
OutputConfig file is good!

Si aucune erreur ne s’affiche, redémarrez le service principal:

buildbot restart ~/master

Lors du rechargement de l’interface Web, un lien indiquant Anonyme devrait apparaître dans le coin supérieur droit. L’accès aux fonctions administratives n’est plus disponible.

image: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-anonymous.png [entrez la description de l’image ici]

Nous allons tester les identifiants que nous venons d’ajouter en cliquant sur «Anonyme», ce qui ouvrira une boîte de connexion dans laquelle nous pourrons entrer le nom d’utilisateur et le mot de passe que nous avons configurés. Lorsque nous nous connectons, nous devrions voir que si «Anonymous» n’a plus accès à la compilation, notre utilisateur «Sammy» en a.

image: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-sammy.png [entrez la description de l’image ici]

À ce stade, notre installation de Buildbot est terminée et nous avons franchi une étape minimale pour sécuriser l’interface. Le nom d’utilisateur et le mot de passe sont toutefois transmis en texte brut. Avant de commencer à utiliser Buildbot, nous vous recommandons de sécuriser l’interface Web avec un fichier http://docs.buildbot.net/current/manual/cfg-www.html?highlight=reverse%20proxy#reverse-proxy- configuration [proxy inverse].

Conclusion

Dans ce tutoriel, nous avons installé et configuré le maître Buildbot et un agent Buildbot local sur le même ordinateur. Si vous évaluez Buildbot, vous voudrez peut-être utiliser le fichier Quick Tour du projet.

Sinon, passez au didacticiel suivant, Comment créer des fichiers d’unité Systemd pour Buildbot, afin de permettre le système init du serveur pour gérer les processus Buildbot.

Related