Jenkins was one of the first essential technologies of the DevOps revolution. As such, development and operations teams around the world constructed expansions, build packs and plugins for this CI/CD tool.
Unfortunately, Jenkins wasn't built for the cloud or designed for containers. In fact, most Jenkins environments differ substantially from a Docker or Kubernetes ecosystem. This left many developers struggling to figure out how they could continue to use this tried-and-true open source automation server. This is the problem that Jenkins X was designed to solve.
The problem with Jenkins and containers
While Jenkins does automate continuous integration, it assembles continuous delivery with custom scripts, manual configuration and siloed release operations. To get Jenkins to achieve proper orchestration of resources and processes in the cloud with containers, developers and operations teams must determine how to get the right plugins, configuration and code to work together in their Jenkinsfile.
In this tinkering process, development teams that work with containers often spend too much time figuring out how to package software as Docker images or create Kubernetes YAML files. While Kubernetes does enable continuous delivery automation, a move from CI/CD pipelines to container-based cloud environments requires skill in both Jenkins and Kubernetes.
Unfortunately, the extra integration process requirements mandated by Jenkins experts create a clash with team members who want to spin up new projects when they see fit. This barrier pushes the need for even more automation in the build, test and deploy process, and it's why Jenkins continues to face problems in cloud-native CI/CD frameworks.
How Jenkins X changes things
Jenkins X is a comprehensive CI/CD tool designed to help ship apps continuously with Kubernetes. It doesn't even require developers to have Kubernetes expertise. The main difference between Jenkins and Jenkins X is that the latter focuses on automating CI/CD for the cloud.
To accomplish this, Jenkins X uses Jenkins in combination with open source tools, such as Helm, Skaffold, Monocular, Nexus, Docker, KSync, ChartMuseum and more. It automates the installation, configuration and upgrades of these open source tools and helps them integrate with CI/CD processes.
Jenkins X also provides developers with feedback on every pull request in the form of a preview before the new code hits staging and production. This capability helps build in reliability and proper authentication early on, and it also prevents last-minute surprises during post-deployment. This capability takes automation to another level, as it lets teams release quality and secure software frequently and predictably to customers.
Not just for Kubernetes
Jenkins X is good for Jenkins users who already use Kubernetes. However, it's also useful for developers who don't know anything about Kubernetes and just want a barebones CI/CD process that can help them move to the cloud. Jenkins X provides excellent support for bootstrapping onto the cloud of your choice, which is a crucial requirement when organizations run hybrid cloud setups.
Software deployment is about finding the perfect balance of infrastructure abstraction and granular environment control. Jenkins X creates this balance by automating the complete CI/CD process while it hides nothing from developers. If you want to hack the Dockerfile or Helm charts for your apps, you may, and you can use Jenkins X to build things outside your Kubernetes cluster.