Continous Integration Ampel

UnitTest Anzeige

Nach Einführung von UnitTest in die Softwareentwicklung im Rahmen der Kontinuierlichen Integration (Continuous Integration) auf der Arbeit fand ich schnell gefallen daran eine Continuous Integration Ampel zu bauen. Diese sollte über das Netzwerk vom Development Server angesprochen werden können, und den aktuellen Build Status optisch (optional Akkustisch) anzeigen.

Da für mich die Verwendung eines kompletten Mini PCs wesentlich einfacher zu implementieren ist, als die Steuerung in Hardware zu relisieren griff ich zu dem Beagle­Board-xM, einem sogenannten „Einplatinen-Computer“. Dieser besteht aus einem ARM Prozessor und aller für den Betrieb notwendigen Schnittstellen, darunter Ethernet, USB und DVI. Die Platine wird mit betriebsfähigen installiertem Linux verkauft, und enthält einen grafischen Desktop.

Da ich auf der Arbeit und Privat fast ausschließlich mit Kubuntu arbeite (mit Linux seit etwa dem Jahr 2000), installierte ich Ubuntu 12.04 Precise Pengulin für ARM auf dem Board, um identische Arbeitsumgebungen zu haben.

Da ich zurzeit hauptsächlich in PHP Programmiere, und es entgegen seinem Ruf auch möglich ist in PHP ordentlich zu Programmieren (Bitte keine Diskussionen über Typsicherheit usw. - ich spreche auch einige andere Sprachen und bin mir dessen Vorteile bewußt), habe ich das Projekt in PHP umgesetzt.

Aufbau

  • BeagleBoard-xM
  • Ubuntu 12.04
  • Apache 2.2
  • PHP 5.2
  • Beschaltung

Erster Test der GPIO Ports

Siehe hierzu das Kapitel Ansprechen eines GPIO Ports für die Grundlagen und der benötigten Software und der InterfaceGpio Klasse. LEDs der Ampel anschliessen, sowie einbau ins Gehäuse

Ich hatte eine sogenannte Lärm­ampel zur Verfügung, welche ich von der alten Elektronik befreite (Leider ist Lärm sehr Subjektiv, so dass die Ampel ihren Zweck nicht erfüllte). In dieser Montierte ich drei Plastikschrauben mit Epoxidharz am Gehäuse befestigt wurden, und dann das BeagleBoard fixierten.

Das Board wurde so gedreht, dass der Ethernet RJ45 Stecker nach unten zeit, über welches die Ampel ans Netzwerk angeschlossen werden kann.

Betrieb der Ampel

Über ein kleines Hilfskript, können die Farben der die Ampel nun direkt gesetzt werden. Dieses Skript wird vom Unittest direkt aufgerufen und zeigt den Status des Build direkt an.

<?php
/**
 * Ampelstatus setzen
 *
 * @param $status neuer Ampelstatus - Binärkdiert Bspl.: 100 = Rot an, Orange aus, Grün aus 
 * 
 * @author Thomas Eimers <notdefine@gmx.de>
 * 
*/

error_reporting(E_ALL);

if (empty($_REQUEST['status'])) {
	die('invalid parameter');
}

require_once('InterfaceGpio.class.php');

$interface=new InterfaceGpio();

$status=$_REQUEST['status'];

$interface->setPort('green', (bool)$status[2]);
$interface->setPort('orange', (bool)$status[1]);
$interface->setPort('red', (bool)$status[0]);
?>
Betrieb der Ampel

Last Change: 01-Sep-2017 03:26

Kontakt und Infos zur Person: Thomas Eimers