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 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.