Jenkins X: Code to Production in High-Speed

Artifactory and Jenkins X

Following another year of successful Jenkins User Conferences (JUC) in France and Tel Aviv, bringing the Jenkins community together for one packed day full of announcements, this year the big news was Jenkins X.

During his keynote talk at the Tel Aviv JUC, Kohsuke talked about the many different superpowers being shipped out to the Jenkins community, that enable Jenkins to evolve according to the growing needs. As well as the collaboration between different companies working together to make something valuable faster. He continued his talk about the latest effort to make Jenkins easier:

“In Jenkins essentials, what we are trying to do is to create a radically simplified Jenkins, because even if your use case may not be all that complicated or sophisticated, perhaps because of that keeping Jenkins easier is actually even more valuable for you. What we are trying to do for the users is to give users a pre-assembled, batteries included, Jenkins ready to go from the get-go without doing any plugin installation and as little configurations as possible. We want people to go from zero to productions with just 5 clicks in 5 minutes… the kind of ease of use the modern software developer expects thanks to all these software as a service offerings.”      Kohsuke Kawaguchi – CTO & Creator, Jenkins CI, CloudBees

5 New Jenkins Superpowers in a Nutshell

  1. Pipeline Improvements: Making the pipeline rock solid with less maintenance code
  2. Blue Ocean: New Jenkins interface
  3. Cloud Native Jenkins: Moving to a large scalable cluster by using cloud-based data services, enabling faster build time, removing file system, eliminating failure, easy disaster recovery and much more
  4. Configuration As Code: Getting all configurations to work from a single file
  5. Jenkins X: Getting from zero to production quickly and easily

Jenkins X

The main idea behind Jenkins X is to assemble all the essential pieces needed for creating an effective CI/CD pipeline, for Kubernetes applications, that’s based on DevOps best practices, and getting your system up and running quickly. These include: Git, Jenkins, a Helm chart repository, a Docker registry, a binary repository and a Kubernetes cluster.

How does Jenkins X work?

The first step is to import your application into the Jenkins X cluster, using the jx import command. Notice that you can import your own application as well as create a new one using the jx create command.

Creating a pull request

Each pull request that you make will automatically trigger the creation of an ephemeral preview environment, that’s created by a pre-built Jenkins job, that also includes the build and test stages. This is an isolated environment in which you can easily access using the link that’s provided in your pull request, or can be accessed using the jx open app command. Use this environment to review your application before moving it to staging.

Creating a pull request

Updating the staging environment

Each merge that you make will automatically update the staging environment once your application has been approved and merged in Git. The build process will run the relevant testing that ensure early detection of any issues. Use this environment to review your application before promoting it to production.

Updating the staging environment

Promoting to production

Finally, we’re ready for production! The previous steps automatically triggered the preview and staging environments. In this stage, the promotion to production is done manually using the jx promote prod command.

Promoting To Production

What you can get when using Artifactory as your binary repository manager with Jenkins X

One of the main functionalities that Jenkins X needs throughout the CI/CD pipeline is a binary repository manager. A repository manager, such as Artifactory, enables Jenkins to build the application using its many artifacts and dependencies that are easily accessible to the developer’s environment, as part of Jenkins CI. Artifactory can also serve as your Kubernetes Registry, managing your Docker images and Helm charts.

Using Artifactory as your binary repository with Jenkins X provides you with powerful build information that enables you to:

  • See all the builds that are published and their build results in Artifactory.
  • Explore the modules of each build, including published artifacts and corresponding dependencies.
  • Obtain information about the build environment and build.

In their talk, Jenkins X Makes CI/CD as Easy as ABC, Galit Nadler (Solution Engineer
at JFrog) and Eyal Ben Moshe (Head of Ecosystem at JFrog) walked through Artifactory’s current release process and showed how Jenkins X can enhance it. Using Jenkins X eliminates the need for a maintenance server and deployment tool. It removes any complexity, multiple tools, and code duplication. Since Jenkins X provides a structured set of tools that are ready to use, there is no need to modify specific flows, making maintenance much simpler.

They continued to demonstrate how Jenkins X can be enhanced by installing it with Artifactory as its binary repository, and using it to resolve the app dependencies and store the artifact

Artifactory and Jenkins X

Simple CI/CD Pipeline for your Kubernetes Apps

Jenkins X provides us with an additional layer of DevOps best practices that easily enables us to go from code to production. It eliminates the hassle of selecting the right technologies to meet all needs, builds and maintains all working environments on-demand (preview, staging and production), all integrated into a complete process and scalable solution.

Note: The Artifactory Jenkins X enhancement has not yet been merged into the official Jenkins X GitHub repository. JFrog is working together with CloudBees to merge the Support JFrog Artifactory pull request.