Skip to content

Setting up a Raspberry Pi as a Jenkins Agent

Jamie Smith edited this page Jun 9, 2022 · 16 revisions

Install build tools

sudo apt-get install aptitude
sudo aptitude install gcc-arm-none-eabi cmake

Set up Jenkins Agent

From here: https://www.gdcorner.com/2019/12/27/JenkinsHomeLab-P2-LinuxAgents.html

sudo aptitude install default-jre
sudo adduser jenkins # and then follow the prompts, can set the password to "jenkins"
sudo su jenkins
mkdir ~/.ssh
nano ~/.ssh/authorized_keys # paste the jenkins agent SSH public key into this file

You can now add the RPi in Jenkins via Manage Nodes and Clouds > New Node

  • Remote Root Directory: /home/jenkins
  • Labels: <all Mbed targets connected to this node, separated by spaces>
  • Launch Method: Launch via SSH
  • Host: <IP address of node>
  • Credentials: <use the Jenkins node key>
  • Host Key Verification Strategy: Manually Trusted

After clicking OK on this screen, the node should be available for use!

Set up udev rules

  • Get serial number of Mbed device from its tty:
udevadm info -a -n /dev/ttyACMxxx | grep '{serial}' | head -n1
  • Create a file /etc/udev/rules.d/99-usb-serial.rules with contents like:
SUBSYSTEM=="tty", ATTRS{serial}=="<serial number>", SYMLINK+="tty<mbed board>", OWNER="jenkins"

where <mbed board> and <serial number> are replaced by the mbed name and serial number.

  • Reload udev:
sudo udevadm control --reload-rules
sudo udevadm trigger
  • Create a folder matching the Mbed target name and link the serial port in the location that the build job expects:
sudo mkdir -p /mbed/<target name>
sudo ln -s /dev/tty<target name> /mbed/<target name>/tty