51 lines
2.2 KiB
Markdown
51 lines
2.2 KiB
Markdown
|
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".
|