Jenkins ======= At the core of our CI system is the **Jenkins framework**. Jenkins serves as the manager for all build jobs, pipelines, and artifact collection. With its sytem of a master node and build executor nodes, we are able to build any software or even a complete operating system environment through cross-compilation, OS bootstrapping processes and similar. This allows to have a build ecosystem for various CPU architectures like x86, Arm, PowerPC, etc. [Jenkins](https://jenkins.io) is the leading open-source automation server, providing hundreds of plugins to support building, deploying and automating any project. As an extensible automation server, Jenkins can be used as a simple CI server or turned into the continuous delivery hub for any project. It can be easily set up and configured via its web interface, which includes on-the-fly error checks and built-in help. Jenkins is also able to easily distribute work across multiple machines. The setup is comprised of a web interface provided by Jenkins, along with helper software that links our Gitlab instance for building Devuan packages using a Git-based workflow. The build executor node ecosystem consists of various machines, including Softiron Overdrive servers, Olimex LIME2 boards, TalosII secure workstations, and 64-bit and 32-bit Intel/AMD computers. Jenkins allows us to utilize all of these machines to transparently build software for different Devuan suites (releases) and CPU architectures without having to maintain different build system. Deployment ---------- Reproducing the base CI ecosystem that is explained above can be done fairly symple on **any Devuan-based** GNU/Linux distribution. To do this, we have to run just a few simple commands: ``` # wget -qO- https://pkg.jenkins.io/debian-stable/jenkins.io.key | apt-key add - # echo 'deb https://pkg.jenkins.io/debian-stable binary/' >> /etc/apt/sources.list # apt update && apt install jenkins ``` Installing the `jenkins` package would result in a running Jenkins instance, ready to produce builds. Further on, adding build executor nodes is as simple as configuring SSH, installing the `jenkins-debian-glue-buildenv-devuan` package, and adding them through Jenkins' web interface through "Add Nodes".