set up raspi4 build slave for jenkins
given the long standing OS#3061 and lack of progress in upstream, we decided to avoid cross-compilation and add a raspi4 based build slave to jenkins.
I ordered a raspi4 with 4GB and 64GB high-performance uSD card as well as a power supply and a large heatsink with fan.
Please assemble the unit and install raspbian 10 on it. I would argue it could go in our enclosd 19" rack next to the firewall, in the "osmocom jenkins reachable" vlan.
Once there is my ssh key on it, I'm happy to try running our normal build-slave ansible playbook against it and check if any x86/arm specifics need t obe ironed out there.
- physical assembly of unit
- installation of raspbian 10
- connection to osmocom-jenkins-vlan (record IP address here)
- installation of build dependencies (try ansible)
- integration as slave with jenkins
- Checklist item physical assembly of unit set to Done
- Checklist item installation of raspbian 10 set to Done
- Status changed from New to In Progress
- % Done changed from 0 to 50
unit has been assembled; raspi 10 image with default password is installed. Please take it from there, it's on your desk.
I've added a debian9 lxc container (deb9build-ansible) just like on the other (x86) slaves, it is reachable at 10.9.25.51.
The playbook is currently being installed. let's see how it goes. If I can make it complete, we can add it as a new build slave to jenkins. However, we must be careful to ensure not every random build job ends up on this slave. We will have docker etc. available, but I'm sure we don't want to start building everything on that poor little machine.
pespin, it will be up to you to make use of this new slave, IIRC this was about building osmo-trx or osmo-bts-trx?
I'll update this ticket once my ansible-playbook-deployment looks complete.
- Checklist item installation of build dependencies (try ansible) set to Done
- Checklist item integration as slave with jenkins set to Done
- Assignee changed from laforge to pespin
The slave is now reachable from jenkins, see https://jenkins.osmocom.org/jenkins/computer/rpi4-deb9build-ansible/ - handing over to pespin
- % Done changed from 60 to 80
I did set up the missing parts to have osmo-trx being checked in
osmo-trx on armv7l required a few fixes related to compiler warnings/errors:
remote: https://gerrit.osmocom.org/c/libusrp/+/17224 m4/ax_boost_base.m4: Update to newest version from autoconf-archive
remote: https://gerrit.osmocom.org/c/libusrp/+/17225 m4/ax_boost_base.m4: Fix debian multiarch_libsubdir path for arch armv7l
I also needed to fix libusrp to build on armv7l:
I was side-tracked for a while due to PATH not containing $HOME/bin in RPI4, since it needed ajekins node UI option adding the the PATH=$HOME/bin. I tried moving that to ansible with .ssh/environment or ~/.pam_environment without success.
ansible job changes:
remote: https://gerrit.osmocom.org/c/osmo-ci/+/17228 job: Update master and gerrit osmo-trx jobs to also build on ARM platform
remote: https://gerrit.osmocom.org/c/osmo-ci/+/17229 hosts: Add rpi4-deb9build-ansible
I have master-osmo-trx job pulling from a branch of mine with those fixes applied until they are merged to avoid it failing all the time.
once merged, I'll also update gerrit-osmo-trx job with the jenkins-job-builder changes
- Build osmo-bts-trx on ARM.
- Change master-osmo-trx job to pull from master
- Deploy changes to gerrit-osmo-trx.
- Status changed from In Progress to Resolved
- % Done changed from 80 to 100
Done since the osmo-pcu failing test has been fixed as part of #4420.
osmo-trx, osmo-bts and osmo-pcu master and gerrit builds are being run in RPI4 slave too now. jenkins jobs have been updated with jenkins-job-builder.