d1man/02-jenkins.md

51 lines
2.2 KiB
Markdown
Raw Permalink Normal View History

2019-07-08 21:30:11 +02:00
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".