Continuous Integration and Continous Delivery in Microservices Platform consists of the following open source components:
In addition it adds the following optional capabilities:
You can choose to opt in or out of any of the micro services within Microservices Platform; 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 Microservices Platform 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 canary and full releases.
Since Microservices Platform 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.
Teams often have many git repositories with many artifacts and docker container builds. Manually maintaining individual Jenkins build configurations for each git repository can be time consuming and error prone.
So we recommend the use of the Jenkins Job DSL to generate the Jenkins build jobs for your projects.
The Jenkins app comes with a template parameter SEED_GIT_URL which is the location of the git repository to clone in Jenkins for the Jenkins Job DSL used to generate the Jenkins builds. Any change in that git repository results in the
seed job being rerun which then regenerates any of its Jenkins jobs.
SEED_GIT_URL parameter defaults to the value
https://github.com/fabric8io/default-jenkins-dsl.git for the default-jenkins-dsl project which provides an example set of scripts to iterate over your projects and create the necessary jobs for them. We hope soon those scripts will automatically setup CI / CD jobs for projects in the hosted Gogs repositories (for now it will iterate over a github organisation and generates builds for matching projects).
If you have Apache Maven installed then the following instructions should get you going.
oc loginto ensure you are logged in and your machine is setup
KUBERNETES_DOMAINenvironment variable which if you are running the Fabric8 vagrant image will be:
docker pull fabric8/fabric8-console docker pull fabric8/jenkins
git clone https://github.com/fabric8io/fabric8-installer.git cd fabric8-installer cd cdelivery mvn install
For now use user
gogsadmin and password
RedHat$1 as the user and password in gogs (unless you changed the defaults).
Now in the fabric8 console if you click the Projects tab the Repositories sub tab should be available. This prompts you to login to gogs with the user and password (until we can get single sign on working with gogs and OpenShift)
Once you are logged in the Repositories tab should show a Create Project button on the top right. Click that and try create a project. On the second page of the wizard you get to choose which archetype to use as the start of the project. (If this combo box doesn't populate first time, its a little bug, go back in your browser and try again ;).
A good start project is the camel-cdi archetype but try any of the archetypes you like the look of.
Once you click the Execute button the new git repository should be created, the initial code for the project generated from the archetype using the group and artifact IDs and Java package names you picked.
You should now be able to see the new repository in the Repositories page and browse the repository in gogs via the Browse button and open the editor using the Edit button.
The create project wizard should also now have triggered the Jenkins Job DSL to generate the CI / CD builds for this new project by triggering the seed build in Jenkins. If you look at the jenkins install - by default at http://jenkins.vagrant.f8 you should see either the seed build running or the new builds created for your project!
Now you might want to setup Chat so that you see chat room notifications of builds and kubernetes resources change.
For more information see Install Fabric8 on OpenShift Guide.