So installieren Sie Buildbot unter Ubuntu 16.04

Einführung

Buildbot ist ein auf Python basierendes kontinuierliches Integrationssystem zur Automatisierung von Softwareerstellungs-, Test- und Freigabeprozessen. Es verwendet die Twisted library von Python, um die asynchrone Kommunikation zwischen einem Buildmaster und einem oder mehreren Workern zu verwalten und das Testen von Builds auf mehreren Plattformen zu erleichtern. Buildbot ist in hohem Maße konfigurierbar und lässt nur wenige Annahmen darüber zu, wie der Erstellungsprozess funktionieren soll, sodass er für komplexe Erstellungsprozesse oder Projekte geeignet ist, bei denen die Tools mit den spezifischen Anforderungen des Projekts wachsen müssen.

In diesem Lernprogramm installieren und konfigurieren wir einen Buildbot-Buildmaster und einen Worker auf demselben Computer.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

Wenn der Server eingerichtet ist, können Sie mitmachen.

Schritt 1 - Buildbot installieren

Das Buildbot-Projekt empfiehlt die Verwendung des Python-Paketindex pip zur Installation von Buildbot, um die neueste Version zu erhalten, die häufig mehrere Releases vor der in den Ubuntu-Paketen verfügbaren Version liegt.

Wir werden als "+ sudo" -Nutzer beginnen und "+ apt-get update" verwenden, um sicherzustellen, dass wir die neueste Paketliste haben:

sudo apt-get update

Dann installieren wir pip selbst:

sudo apt-get install python-pip

Sobald pip verfügbar ist, installieren wir damit das Buildbot-Bundle, das den Master und den Worker sowie andere Abhängigkeiten enthält, einschließlich der für die Webschnittstelle erforderlichen Abhängigkeiten. Pip erstellt "+ .cache " - Dateien im Ausgangsverzeichnis des Benutzers, der sie ausführt. Wir werden das " -H " - Flag von " sudo +" verwenden, um diese Dateien an der richtigen Stelle abzulegen:

sudo -H pip install 'buildbot[bundle]'

Abhängig von der Geschwindigkeit Ihres Servers kann dies einige Zeit in Anspruch nehmen. Das Ende der Ausgabe einer erfolgreichen Installation sollte ungefähr so ​​aussehen:

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

Möglicherweise wird auch eine Empfehlung zum Aktualisieren von pip selbst angezeigt:

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.

Dies hat keine Auswirkungen auf unsere Buildbot-Installation. Wir nehmen uns jedoch einen Moment Zeit, um auf die neueste Version von pip zu aktualisieren:

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

Abschließend überprüfen wir die Installation von Buildbot, indem wir die Version überprüfen:

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

In der Tutorial-Voraussetzung haben wir eine UFW-Firewall so konfiguriert, dass nur SSH-Verkehr zugelassen wird. Wir werden den Status überprüfen:

sudo ufw status
OutputStatus: active

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

Buildbot verwendet Port 8010 für die Webschnittstelle, was nicht zulässig ist. Deshalb öffnen wir das jetzt.

sudo ufw allow 8010

Anschließend fügen wir einen dedizierten Systembenutzer und eine dedizierte Systemgruppe hinzu, um die Buildbot-Dienste auszuführen:

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

Zum Schluss melden wir uns als neuer Benutzer an, um Buildbot zu installieren:

sudo --login --user buildbot

Dies meldet uns als Benutzer "+ buildbot " an und legt uns im Verzeichnis " / home / buildbot +" ab, in dem wir unseren Master und Worker konfigurieren:

Schritt 2 - Konfigurieren des Masters

Wir verwenden den Buildbot-Befehl "+ create-master +" gefolgt vom Wert des Basisverzeichnisses:

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

Als nächstes kopieren wir "+ master.cfg.sample " nach " master.cfg +" und belassen das Original als Referenz:

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

Anschließend bearbeiten wir die Datei, damit wir von einem lokalen Computer aus auf die Weboberfläche zugreifen können.

nano ~/master/master.cfg

Um von einem Desktop oder einem anderen Gerät aus auf die Weboberfläche zuzugreifen, ändern wir "+ buildbotURL " von " localhost " in die IP-Adresse oder den Domänennamen des Servers. Wir werden auch die Nutzungsberichterstattungsrichtlinie festlegen. Andere wichtige Konfigurationswerte werden in " master.cfg +" festgelegt, aber die restlichen Standardwerte werden vorerst beibehalten.

Suchen Sie am Ende der Datei die Zeile "+ buildbotURL " und ersetzen Sie " localhost +" durch die IP-Adresse oder den Domainnamen Ihrer Site:

~ / master / master.cfg

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

Als nächstes setzen Sie am Ende der Datei den Wert der Direktive "+ buildbotNetUsageData ". Hiermit wird festgelegt, ob Buildbot den Entwicklern Nutzungsstatistiken meldet, um die Verbesserung der Anwendung zu unterstützen. Sie können dies auf " Keine " setzen, um dies zu deaktivieren. Wenn es Ihnen nichts ausmacht, grundlegende Informationen zu Ihrer Verwendung zurückzusenden, verwenden Sie stattdessen die Zeichenfolge "" basic "+". + Weitere Informationen zu dieser Einstellung finden Sie in der globalen Buildbot-Konfigurationsdokumentation unter https://docs.buildbot.net/latest/manual/cfg-global.html#buildbotnetusagedata]:

~ / master / master.cfg

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

Wenn Sie das "" buildbotURL "" geändert und die "+ buildbotNetUsageData" -Zeile hinzugefügt haben, speichern Sie die Datei und schließen Sie sie.

Überprüfen Sie die Konfiguration des Masters, indem Sie Folgendes eingeben:

buildbot checkconfig ~/master

Sie erhalten eine Ausgabe mit der folgenden Meldung, wenn die Syntax in Ordnung ist:

Output. . .
Config file is good!

Wenn die Ausgabe darauf hinweist, dass Syntaxfehler aufgetreten sind, überprüfen Sie die Datei erneut. Sobald der Befehl + checkconfig + Erfolg anzeigt, starten Sie den Master:

buildbot start ~/master

Wenn der Neustart erfolgreich ist, sollten Sie die folgende Bestätigung erhalten:

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

Besuchen Sie abschließend die Site in einem Webbrowser auf Port 8010 unter dem von uns konfigurierten Befehl "+ buildbotURL +":

+ http: //: 8010 / +

image: https://assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-welcome.png [Screenshot des Begrüßungsbildschirms von Buildbot]

Nachdem der Master ausgeführt und überprüft wurde, dass wir auf die Weboberfläche zugreifen können, erstellen wir den Beispiel-Worker.

Schritt 3 - Worker konfigurieren

Die Beziehung zwischen einem Master und einem Worker wird hergestellt, wenn der Name und das Kennwort eines Workers in der Datei "+ master.cfg +" mit dem Namen und dem Kennwort eines Workers übereinstimmen, der für die Verwendung des Masters konfiguriert ist.

In diesem Schritt erstellen und konfigurieren wir einen Worker, indem wir den Befehl "+ buildbot-worker +" + create-worker + "aufrufen und vier Einstellungen übergeben:

  • + Arbeiter + ist der Name des Verzeichnisses, in dem die Einstellungen des Arbeiters gespeichert werden

  • "+ localhost +" ist die Adresse, an der der Master des Workers ausgeführt wird

  • + example-worker + ist der Name des Workers und muss den Worker in der Datei + ~ / master / master.cfg + eindeutig identifizieren.

  • "+ pass " ist das Arbeiterkennwort und dieses Kennwort muss mit dem Wert in " ~ master / master.cfg +" übereinstimmen.

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

Wenn der Worker zum ersten Mal eine Verbindung herstellt, sendet er Dateien im Verzeichnis "+ info +" an den Buildmaster, in dem er ausgeführt wird. Sie werden auf der Weboberfläche angezeigt, um Entwicklern weitere Informationen zu Testfehlern zu geben.

Diese werden jetzt konfiguriert. Öffnen Sie zunächst die Datei mit der E-Mail-Adresse des Administrators, löschen Sie die Beispielzeile "+ Ihr Name hier <[email protected]ültig> +" und ersetzen Sie sie durch Ihren Namen und Ihre E-Mail-Adresse.

nano ~/worker/info/admin

~ / worker / info / admin

<>

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Die Datei "+ info / host +" enthält standardmäßig das Betriebssystem, die Version, die Speichergröße, die CPU-Geschwindigkeit, die Versionen der installierten relevanten Bibliotheken und schließlich die Buildbot-Version, die auf dem Worker ausgeführt wird.

Öffnen Sie die Datei und fügen Sie die relevanten Informationen ein. Aktualisieren Sie den Beispielinhalt nach Bedarf für Ihr System:

nano ~/worker/info/host

Aktualisieren Sie die von Ihnen verwendeten Informationen, um die Besonderheiten Ihres Systems widerzuspiegeln:

~ / worker / info / host

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

Wenn Sie fertig sind, speichern und beenden Sie das Programm. Zum Schluss starten Sie den Worker:

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

Nachdem sowohl der Master als auch der Worker konfiguriert sind und ausgeführt werden, führen wir eine Testerstellung durch.

Schritt 4 - Ausführen eines Testbuilds

Um einen Testbuild auszuführen, öffnen wir das Menü "Builds" in der Weboberfläche und wählen "Workers" aus. Der Beispiel-Worker und die Informationen, die wir in "+ info / admin " und " info / host +" festgelegt haben, sollten angezeigt werden. Von hier aus können wir auf den Standard-Builder "runtests" klicken, um einen Build zu erzwingen.

Der Bildschirm "Runtests" enthält nur wenige Informationen, bis die erste Build-Anfrage gestellt wird. Wir werden jetzt eine erzwingen, indem wir oben rechts auf dem Bildschirm auf die Schaltfläche "Erzwingen" klicken:

image: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buldbot-force.png [Screenshot mit dem Force-Button]

Daraufhin wird ein Dialogfeld geöffnet, in dem Sie Informationen zum erzwungenen Build eingeben können. + image: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-info.png [Screenshot von Buildbots Force Build Popup]

Bei diesem Test-Build lassen wir die Felder leer und klicken im Popup-Fenster auf die Schaltfläche "Build starten". Wenn Sie einen Wert in das Feld "Ihr Name" eingeben, muss dieser eine gültige E-Mail-Adresse enthalten.

In wenigen Sekunden sollte der Build erfolgreich abgeschlossen werden:

Sie können die Details der einzelnen Schritte im Build untersuchen, indem Sie auf die Nummer oder den Pfeil neben dem Namen klicken:

Möglicherweise haben Sie bemerkt, dass wir uns nicht anmelden mussten, um diesen Build auszuführen. Standardmäßig kann jeder auf administrative Funktionen zugreifen. Bevor wir also fertig sind, nehmen wir uns einen Moment Zeit, um diese zu sperren und ein Benutzerkonto zu erstellen. Weitere Informationen zu den verfügbaren Optionen finden Sie in der [Buildbot-Autorisierungsdokumentation] (http://docs.buildbot.net/current/developer/authz.html).

Öffnen Sie die Datei + master.cfg + erneut:

nano ~/master/master.cfg

Fügen Sie am Ende der Datei die folgenden Zeilen hinzu, und ändern Sie den Benutzernamen und das Kennwort.

Datei: ~ / master / master.cfg

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

Wenn Sie fertig sind, führen Sie eine weitere Syntaxprüfung für die Datei durch:

buildbot checkconfig ~/master
OutputConfig file is good!

Wenn keine Fehler angezeigt werden, starten Sie den Master-Service neu:

buildbot restart ~/master

Wenn wir die Weboberfläche neu laden, sollte oben rechts ein Link mit der Aufschrift Anonym angezeigt werden, und der Zugriff auf die Verwaltungsfunktionen ist nicht mehr verfügbar.

Wir testen die soeben hinzugefügten Anmeldeinformationen, indem wir auf "Anonym" klicken. Daraufhin wird ein Anmeldefeld geöffnet, in das wir den von uns konfigurierten Benutzernamen und das Passwort eingeben können. Wenn wir uns einloggen, sollten wir sehen, dass “Anonymous” keinen Zugriff mehr hat, um einen Build zu starten, während unser “Sammy” -Nutzer dies tut.

Zu diesem Zeitpunkt ist unsere Installation von Buildbot abgeschlossen und wir haben nur einen minimalen Schritt unternommen, um die Schnittstelle zu sichern. Benutzername und Passwort werden jedoch im Klartext übertragen. Wir empfehlen als nächsten Schritt und bevor Sie Buildbot ernsthaft verwenden, das Webinterface mit einem http://docs.buildbot.net/current/manual/cfg-www.html?highlight=reverse%20proxy#reverse-proxy- zu sichern. Konfiguration [Reverse Proxy].

Fazit

In diesem Lernprogramm haben wir den Buildbot-Master und einen lokalen Buildbot-Worker auf demselben Computer installiert und konfiguriert. Wenn Sie Buildbot testen, können Sie die Quick Tour des Projekts verwenden.

Fahren Sie andernfalls mit dem nächsten Lernprogramm fort (https://www.digitalocean.com/community/tutorials/how-to-create-systemd-unit-files-for-buildbot[How To Create Systemd Unit Files for Buildbot) das Init-System des Servers, um die Buildbot-Prozesse zu verwalten.