As a DevOps engineer, I thought JenkinsX is a CI/CD tool for containers to build in K8s environments. But it's wrong. JenkinsX is an attempt to automate the whole development process end to end for containerized applications based on Docker and Kubernetes. JenkinsX is an Open Source project and is not a fork of Jenkins. JenkinsX reuses Jenkins Core and it has set of additional tools to achieve its goal. It is easy to customize JenkinsX as we can edit or replace any of its tool sets.
JenkinsX address the following problems:
- Frequent deployments
- Low Mean Time to Recover
- CI/CD
- Configuration as Code
- Automated Release Management
Once JenkinsX installed, it setup and configure the following for you:
- Create a Git repo for a new application with development, staging and production environment.
- Create a pipeline configuration in Jenkins for a new application and connect it with a Git repo
- Automate the DevOps processes (like builds, artifacts and containers creation and deployments) based on Git operations (branching, commits, PR creating, PR merging)
Building Blocks of JenkinsX:
Strengths of Jenkins X:
- It address the pain points and streamlining implementation of DevOps/GitOps principles. It saves a lot of time for new project implentations.
- Concept of JenkisX is very strong.
- Good toolset, which is already configured and works (k8s, Jenkins, Docker registry, Chartmuseum, Monokular, Nexus)
- "JX Quickstarts" make a creation of new apps an easy ride
- Ability to customise the pipelines and their templates
- It provides a preview environment, which helps in decision making for pull requests.
Not that good points of Jenkins X:
- Jenkins X is another framework to learn.
- Still its a baby, a lot of things to implement and improve
- Documentation lacks comprehensive, it has only basic information
- Migration of existing CI/CD pipelines into Jenkins X is difficult
- For each team, we need to deploy each JenkinsX instance
JenkinsX Flow: