gluon/contrib/ci/jenkins-community-slave
Matthias Schiffer 6b3b5e706e jenkins-community-slave: use requests library to download slave.jar
Do not mix two different HTTP libraries in one script. This fixes a
warning:

/var/lib/jenkins/slave.py:82: DeprecationWarning: URLopener style of invoking requests is deprecated. Use newer urlopen functions/methods

This simple implementation has the disadvantage that it stores the whole
file in RAM, but this isn't an issue for the 1.5MB slave.jar.
2020-06-01 20:18:24 +02:00
..
Dockerfile contrib/ci: install rsync on jenkins-community-slaves 2020-04-15 17:56:38 +02:00
README.md contrib/ci: document kvm permissions configuration 2020-04-26 00:25:11 +02:00
slave.py jenkins-community-slave: use requests library to download slave.jar 2020-06-01 20:18:24 +02:00

Gluon CI using Jenkins

Requirements

  • Linux system
    • with docker installed
    • with Hardware Virtualisation (KVM Support)
      • Verify using: lscpu | grep vmx
      • If machine is virtualized host needs to load kvm_intel with nested=1 option and cpuflags need to include vmx

Architecture

Screenshot from 2019-09-24 00-20-32

Installation

You can support the gluon CI with your infrastructure:

  1. You need to query @lemoer (freifunk@irrelefant.net) for credentials.
  2. He will give you a SLAVE_NAME and a SLAVE_SECRET for your host.
  3. Then go to your docker host and substitute the values for SLAVE_NAME and a SLAVE_SECRET in the following statements:
git clone https://github.com/freifunk-gluon/gluon/
cd gluon/contrib/ci/jenkins-community-slave/
docker build -t gluon-jenkins .
mkdir /var/cache/openwrt_dl_cache/
chown 1000:1000 /var/cache/openwrt_dl_cache
echo "z /dev/kvm 0666 - kvm -" > /etc/tmpfiles.d/kvm.conf
systemd-tmpfiles --create
docker run --detach --restart always \
    --env "SLAVE_NAME=whoareyou" \
    --env "SLAVE_SECRET=changeme" \
    --device /dev/kvm:/dev/kvm \
    --volume /var/cache/openwrt_dl_cache/:/dl_cache \
    gluon-jenkins
  1. Check whether the instance is running correctly:
    • Your node should appear here.
    • When clicking on it, Jenkins should state "Agent is connected." like here: Screenshot from 2019-09-24 01-00-52
  2. Your docker container needs to be rebuilt, when the build dependencies of gluon change. As soon as build dependencies have changed, the build dependency api level has to be raised. After you rebuilt your docker container, notifiy @lemoer, so he can bump the versioning number.

Backoff

  • If @lemoer is not reachable, please be patient at first if possible. Otherwise contact info@hannover.freifunk.net or join the channel #freifunkh on hackint.