fabric8 provides Continuous Integration and Continuous Delivery (CI and CD) infrastructure built as a set of Kubernetes resources which are easy to Install.
Continuous Integration and Continuous Delivery in fabric8 consists of the following open source components:
In addition it adds the following optional capabilities:
To use the functions and steps in this library just add the following to the top of your Jenkinsfile
:
@Library('[email protected]')
Jenkinsfile Library is a library of reusable Jenkinsfile
files you can copy into your project. This library is also used by the developer console to provide the choice of pipelines when creating a project (via the underlying JBoss Forge wizard)
fabric8.yml file as a per project configuration file to tie together the various projects, repositories, chat rooms, workflow script and issue tracker
You can choose to opt in or out of any of the micro services within fabric8; for example use any git repository hosting or Nexus installation. The Chat integration works with hubot so that it can work with any back end chat service such as IRC, Slack, HipChat, Campfire etc.
By default we try and integrate all the components closely out of the box so fabric8 is an easy, 1 click install. e.g. by default Jenkins builds will use the local Nexus server for all downloads of maven artifacts and for all releases.
Since fabric8 is built on top of Kubernetes we get an easy way to scale (e.g. Jenkins build slaves) together with letting us reuse Kubernetes services for service discovery to wire up the various components (e.g. for Jenkins to discover Nexus). If you opt out of any of the default implementations; you just need to create a Kubernetes Service pointing to your external installation of the service.
With the advent of Jenkins Pipelines (included by default from version Jenkins 2.0) its considered good practice to define your pipline in a file called Jenkinsfile
and to copy that into the root folder of your git repository.
The github organisation plugin can be configured to automatically iterate through all repositories for a given organisation and then for each repository it will find all branches with a Jenkinsfile
and automatically setup a build job for the pipeline. Then all the build jobs appear in the developer console.
The pipeline multibranch plugin automatically creates a jenkins job for every branch in a repository that has a Jenkinsfile
. Then all the build jobs appear in the developer console.
Here is a video demonstrating Fabric8 Continuous Delivery Pipelines