Jenkins on Raspberry Pi

Jenkins on Raspberry Pi

On Neofonie Mobile GmbH team event, the Fedex Day, we came upon the idea of visualising the build status of our projects on our Continuous Integration system. While investigating existing notification solutions, we found none that suited our needs; they were either not eye-catching (like email notifications, which we already used), or they were too expensive to deploy to the whole team. Thus, during our Fedex Day (alright, we had prototyped hardware in advance), we created devices that would inform us visually about the current project build status and build progress with the aim for the devices to be affordable, easy to create, and wireless capable.

Since Jenkins CI checks project compilation and performs tests on every source change already but only presents the results on the web-based dashboard or through emails, we wanted to improve the way to observe build status. We wanted it to be more direct and effortless (and a little bit decorative too – there is nothing like a green glow in the office at the end of the day), so we ended up with dedicated hardware for observing build status hanging on a wall in the developers’ rooms.

Architecture

The project idea is really simple. The central element of the system is a Raspberry Pi computer that periodically asks Jenkins CI about the status of projects. Each endpoint, an indicator device, has a unique ID assigned. The Raspberry Pi maps the project’s name to the proper device ID, and then it broadcasts the build status wirelessly.

Diagram created with Jenkins logoRaspberry Pi logo and own photography of hardware; courtesy of Michal Dabrowski

Upon receiving the message address to a particular indicator, the latter updates the LED ring animation. Depending on the received build state it goes from subtle green fading for successful builds, up to alarming red blinking for broken builds.

Hardware

In order to achieve reasonable pricing with a highly scalable tool, we decided to use Raspberry Pi, as mentioned above, to serve as a hub and the Arduino Nano board as the controller for Neopixel matrix. For wireless communication, we used a NRF24L01+ module, since it can be easily incorporated in both the hub and the endpoints.

Project Hardware Listing

  • Raspberry Pi Model B+ (running Raspbian) with SD card (any Raspberry Pi model could be used, however mind the GPIO connections).
Courtesy of Tomasz Grynfelder
  • Arduino Nano v3.3 (any kind of arduino device should be fine, please just keep in mind, that nRF24L01+ has to be powered with 3.3V).
Courtesy of Tomasz Grynfelder
  • nRF24L01+ modules (we recommend using the external antenna model on the Raspberry Pi and PCB antenna ones on indicators; in case of connectivity issues please add bypass capacitors between power and ground pins).
Courtesy of Tomasz Grynfelder
  • Neopixel LED ring or strip  (we’ve used 8 LED pixels strip and 16 LED pixels ring; please mind current draw limits of Arduino when using larger number of pixels).
Courtesy of Tomasz Grynfelder
  • Universal board or printed PCB (please find included eagle schematic).
  • Female to female wires.

Hardware Assembly

Wiring Raspberry Pi

Connect nRF24L01+ module in the following way (we used nRF24L01+ with the PCB antenna, in external antenna model pinout is the same).

Diagram created with http://fritzing.org/home/

Please mind that we refer to the GPIO numbers or special function name, not pin numbers.

Connection scheme:

PI header → nRF24 header

3v3 → VCC

GND → GND

SPI_MISO → MISO

SPI_MOSI → MOSI

SPI_CLK → SCK

SPI_CE0_N → CSN

GPIO_25 → CE

NOT USED IRQ

Wiring Jenkins Indicator

Diagram created with http://fritzing.org/home/

Connection scheme:

Arduino → Neopixel

5v → VCC

GND → GND

D3 → DATA_IN

We strongly suggest the use ICSP pins as side pins are often causing issues with nRF24.

Arduino → nRF24L01+

3.3V → VCC

GND → GND

CNS → D8

CE → D7

MISO → ICSP MISO (D12)

MOSI → ICSP MOSI (D11)

SCK → ICSP SCK (D13)

NOT USED IRQ

Software

Setting up Raspberry Pi

You can launch our configuration script jenkins-indicator-setup.sh (with superuser proviledges) or perform the following steps manually:

  1. Checkout the git project repository from Bitbucket https://bitbucket.org/neofoniemobile/jenkins-indicator-rpi.git master
  2. Install the following packages on Raspbian:
    1. git
    2. libboost1.50-all
    3. python-jenkinsapi
    4. python-setuptools
    5. python-enum34
    6. gcc-avr
    7. binutils-avr avr-libc
    8. gdb-avr avrdude espeak
  3. For Raspberry Pi 1 or 0, extend swap size twice
  4. Download, compile, and install the RF24 library (can be found here: https://github.com/TMRh20/RF24)

At this point you should be able to get nrf24 on Raspberry up and running. You can test it by invoking sudo ./test_hardware.py 1 2 3

That script will try sending test notifications to the devices with ids 1 2 and 3. We will see how to assign ids to the devices later. You should see the following output:

The script then tries to send emulated build status messages to the indicators with the provided IDs. These are the numbers that we used for testing but you can modify the script to use an arbitrary device, but let’s leave it until we are done with the arduino indicator part though.

Setting up Arduino

To configure the Arduino board, please perform the following steps manually:

  1. Checkout the git project repository from Bitbucket https://bitbucket.org/neofoniemobile/jenkins-indicator-arduino.git master
  2. Install platform.io CLI (see: http://platformio.org/get-started/cli)
  3. Connect the arduino nano into usb port and execute platformio run in project’s directory. You should see the following output (compilation and flashing arduino):

Setting up Arduino Indicator Eeprom

To properly run the endpoint device so that it can listen to the hub’s broadcasted messages, you have to configure the Arduino Indicator. We decided to store the configuration in two predefined addresses of the Arduino’s EEPROM memory.

Address 0x00 holds the identifier for the device, while address 0x01 holds the number of pixels that device has.

In order to make the device configuration easier, we created scripts that will generate and flash the EEPROM of your indicator directly from your Raspberry Pi.

Please connect the device to the USB port and run configure_indicator.py script, where you will be asked two questions:

  • what is the device ID (every indicator in your location should have a unique ID),
  • how many Neopixel LEDs the device has.

You should see the following output:

Testing Indicator and Raspberry Pi

Please connect your Indicator to a 5V power source (ie a phone charger or a USB port). Then run sudo ./test_hardware script as mentioned before (you should change the indicator number if you specified a different value when programming EEPROM).

After that, the indicator should start receiving messages and update the Neopixel LED matrix accordingly.

Setting up Raspberry Pi Service

After successful tests, you can proceed with the configuring service on Raspberry Pi. In the sample_service directory you can find template files that should be placed in /etc/indicator and /etc/init.d .

Please proceed with the following steps:

  1. Set your Jenkins credentials in server_config.json file (password corresponds to the Jenkins API access token which can be generated under: http://[your.jenkins.server]/me/configure)
  1. Move the server_config.json file to the /etc/indicator
  2. Make the server_config.json file readable only by a superuser (since it contains Jenkins access credentials!)
  3. Set your project name – device ID mapping in the indicator_config.json file
  1. Copy the indicator_config.json file to the /etc/indicator directory (depending on your preferences, you may also restrict access to this file)
  2. Set DIR in indicator.service file to your location of the repository
  3. Copy the indicator.service file to /etc/init.d directory
  4. Give superuser root Read Write and Execute permissions to the indicator.service file

After the given steps, you should be able to start and stop the service and see its status using the following commands:

  • sudo service indicator start
  • sudo service indicator stop
  • sudo service indicator status

If you would like to make the service start at bootup you can use update-rc.d script to do that:

sudo update-rc.d indicator defaults

That’s it! Now you should have your Jenkins Indicators up and running.

IOT Ideas

As the Jenkins Indicator project gave our team a perfect visualisation of our day-to-day work and a lot of fun too, we’re going to explore new areas and share our knowledge on much higher level of complexity and top notch technologies like Bluetooth Low Energy or low level programming.

Smart things that surround people, starting from home up to their workplace, are getting much more common year by year. We are now trying to stay ahead of these changes and give everybody a helping hand to get their own hardware and join the IoT.

We’re looking forward to show you more in the near future!

Published on 23 February 2017, updated on 08 October 2020

Share on
Tomasz Grynfelder and Michal Dabrowski

Tomasz Grynfelder and Michal Dabrowski

Tomasz Grynfelder – Senior Software Engineer at Neofonie Mobile GmbH, mobile technologies freak highly focused on iOS development and security. Serial conferences, meetups and hackathons participant (as both speaker and audience). After hours, great fan of cycling and sailing. Michal Dabrowski – works as Software Engineer at Neofonie Mobile. He specializes in Android application- and system development. Privately big fan of Raspberry Pi, Arduino and all platforms that enable creating hacky devices (especially the ones one can use via a mobile device later on).

Modellkomimierung_News

KI-Modelle komprimieren und Ressourcen sparen

Viele KI-Modelle haben hohe Trainings- und Betriebskosten und damit sowohl wirtschaftliche als auch ökologische Folgen. Qi Wu von ontolux stellt einige Methoden der Modellkomprimierung vor, die helfen, den CO₂-Fußabdruck, der durch die Verwendung neuronaler Netze entsteht, zu verringern. 

BSI_Grafik_kl

Analyse von Lageinformationen für das BSI

ontolux entwickelt für das Bundesamt für Sicherheit in der Informationstechnik (BSI) eine NLP-Anwendung zur Analyse von Lageinformationen und der Erkennung von Gefahrenmeldungen.

Header_KI_Forschung_ontolux

KI & Forschung 12-2021

Das Jahr 2021 war geprägt von Language Models, aber generell war eine gewisse Stagnation im Bereich KI und NLP zu erkennen. In der aktuellen Dezember-Ausgabe von „KI und Forschung“ stellt Dr. Till Plumbaum erneut die wichtigsten Ereignisse im KI-Umfeld vor.

Kuchenbuch_Michaela

Mobiles Arbeiten bei Neofonie

Seit 2020 arbeitet die Mehrheit der Neofonie Mitarbeiter remote aufgrund der aktuellen Situation – Pandemie. Wie hat sich das Miteinander und das gemeinsame Arbeiten verändert? Wir haben Michaela Kuchenbuch, HR Recruiting, gefragt, was die neue Arbeitskultur bei Neofonie ausmacht und wie sie sich umsetzen lässt.

Künstliche neuronale Netze und Ihre Rechenleistung

Künstliche neuronale Netze (ANN) haben in der Regel eine enorme Größe mit unzähligen Parametern, um komplexe Probleme zu lösen. Dies erzeugt jedoch hohe Rechenleistungen. Unsere KI-Agentur ontolux stellt einige der bekanntesten neuronalen Netze für NLP hinsichtlich ihrer Leistung, Größe und Energieeffizienz vor.

KI & Forschung 11-2021

In der aktuellen November-Ausgabe von „KI und Forschung“ geht es um die Fortschritte in der Informatik, Mathematik und Computertechnik, den freien Zugang zu GPT-3 und um die Ethik von Künstlicher Intelligenz.

Whitepaper zu Text Mining und NLP-Frameworks im Vergleich

ontolux – KI-Agentur der Neofonie gibt im aktualisierten Whitepaper “Die wichtigsten deutschsprachigen NLP-Whitepaper unter der Lupe” einen detaillierten Überblick über Anforderungen, Anbieter-Tests sowie Ergebnisse.

Reibungslose CMS Einführung bei R+V

Auf der Suche nach einer sicheren und einheitlichen technologische Content Plattform für die gesamte R+V, hat sich die R+V Versicherung für Einführung des neuen Content Management Systems Magnolia entschieden. Die Implementierung erfolgte durch Neofonie.

scalye_News_Logo

Neofonie ist Partner für die ABOUT YOU SCAYLE Commerce Engine

Neofonie gehört zu den ersten 14 ausgewählten deutschlandweiten Partnern für das Enterprise Shop Software SCAYLE. Als Partner unterstützt Neofonie vor allem in der Beratung, UX, im Frontend und der Implementierung.

In der aktuellen Oktober-Ausgabe von "KI und Forschung" geht auf das neu erschienene Language Model – MT-NLG von Microsoft und NVIDIA ein, beschäftigt sich mit der neuesten Version der Machine Learning Library PyTorch und der Zukunft der Suche.

KI & Forschung 10-2021

In der aktuellen Oktober-Ausgabe von „KI und Forschung“ geht es um das neu erschienene Language Model – MT-NLG von Microsoft und NVIDIA sowie um die neueste Version der Machine Learning Library PyTorch und die Zukunft der Suche.

Gratis Usability Check mit Grant McGillivray

Ein digitales Produkt, sei es eine Website, ein Onlineshop oder eine digitale Anwendung, soll Usern ein positives Nutzererlebnis verschaffen. Wie kann dieses wichtige Ziel erreicht werden? Wie gut ist das Nutzererlebnis der eigenen Website? ION ONE gibt darauf Antworten mit einem kostenfreien Usability Check.

Digitalisierung der öffentlichen Verwaltung

Im Rahmen der Onlinezugangsgesetzes (OZG) sind Einrichtungen der öffentlichen Hand verpflichtet, ihre Serviceleistungen digital zugänglich zu machen. Hierfür ist die automatisierte Verarbeitung von Texten unumgänglich, um „weniger Papierkram“ zu verursachen.

axel-ionone_news

UX-Sprechstunde mit Axel Hillebrand

Digitale Produkte nutzerzentriert zu gestalten, wirft viele Fragen auf. Mit der UX-Sprechstunde von ION ONE steht Ihnen Axel Hillebrand als UX-Experte für jegliche Fragen zur Verfügung – kostenfrei und ganz individuell.

Noelani_Mac

noelani.de: Der neue Onlineshop für trendbewusste Frauen

Der femininen Schmuck von NOELANI erhält erstmalig eine eigene Onlinepräsenz. Von der Konzeption, über das Design bis zur Entwicklung auf Shopware 6 hat Neofonie den neuen Onlineshop umgesetzt.

KI & Forschung 09-2021

In der September-Ausgabe von „KI und Forschung“ werden die Themen Künstliche Intelligenz als Forschungsgebiet, Arbeiten in der Zukunft und Neuigkeiten von Google aus dem Search On Event vorgestellt.

ION ONE beim Digital Marketing Summit 2021

Der Digital Marketing Summit ist das Event des Jahres 2021 für Themen des digitalen Marketings und UX/UI. Axel Hillebrand von der UX-Agentur ION ONE ist mit einem Vortrag vertreten und zeigt, wie B2B-Websites in Lead-Maschinen verwandelt werden.

Whitepaper: Goldstandard für kundenspezifische Suchlösungen

Eine kontinuierliche Optimierung einer Suche ist unerlässlich. In dem Whitepaper „Goldstandard für kundenspezifische Suchlösungen“ stellt Cornelia Werk, Lead Consultant Search bei ontolux, Konzepte einer goldstandardbasierten Evaluation vor.

Index eines Buches

Neofonie startet Forschungsprojekt mit der HU Berlin

Zusammen mit dem Lehrstuhl der HU Berlin von Professor Alan Akbik, startet Neofonie das ZIM Projekt Semantische Begriffsanalyse für Information Retrieval Aufgaben (SEBIRA).

Header_Crossplan_PM

Crossplan Deutschland und Neofonie Mobile GmbH entwickeln Wrapper SDK für Audio-Apps

Mit dem neuen Wrapper SDK von Crossplan Deutschland stehen Audio-Publishern einfach und effizient alle benötigten SDKs für ein datengetriebenes App Advertising und Audio-Marketing zur Integration in die eigene App-Landschaft zur Verfügung.

Green_IT

Neofonie mit klimaneutraler Website

Neofonie setzt auf Green IT und ist bemüht, Emissionen so weit wie möglich zu reduzieren und Ressourcen umweltschonend einzusetzen. Jeder Klick auf neofonie.de ist klimaneutral. Neofonie unterstützt hierfür zertifizierte Klimaprojekte.

Unser Newsletter „Neo Report“ vermittelt konkretes Praxiswissen, Trends und Know-how für Ihr digitales Business – quartalsweise und kompakt. Jetzt anmelden.