Jenkins Blue Ocean and Pipelines Intro
Jenkins Blue Ocean is the latest iteration of the modern Continuous Integration (CI) ecosystem from the industry standard Jenkins server. It gives a new, pipeline focused view to Jenkins jobs, while providing constant insight into each step of the process. Pipelines are a fantastic way to view traditional jobs, and Jenkins pipelines give you that new view backed by years of traditional CI power. Blue Ocean builds upon the solid foundation of the Jenkins CI server by providing both a cosmetic and functional overhaul for the modern process. From the Jenkins description of their product, they espouse the benefits of pipelines versus traditional build jobs:
- Code: Pipelines are implemented in code and typically checked into source control. This gives you the ability to version pipeline definitions, and incrementally make changes and improvements.
- Durable: Pipelines can survive both planned and unplanned restarts of the Jenkins master.
- Pausable: Pipelines can optionally stop and wait for human input or approval before continuing the Pipeline run. This allows for promotion of stable builds, verification of test results, and other steps requiring manual intervention
- Versatile: Pipelines support complex real-world continuous delivery requirements, including the ability to fork/join, loop, and perform work in parallel.
- Extensible: The Pipeline plugin supports custom extensions to its DSL (Domain-Specific Language) and multiple options for integration with other plugins.
Looking at the above screenshot, you can see that each of your stages is laid out clearly in an easy to read manner. Similarly, each step that your stage may have is also shown, giving you a clear top-down view of your build procedure. The true power of this is that your pipeline is laid out in code. The setup is entirely automated by the Jenkins master reading from your project's Jenkinsfile. This file is checked in with your source code, meaning it can be versioned along with the needs of your program. It's Domain Specific Language (DSL) allows for modularity with stages and jobs, with Git checkouts, maven builds, and Docker commands natively supported, among others. And anything that isn’t a plugin can be run with a simple shell command, so it is extremely flexible as well.
A central component of modern CI is one of constant feedback. Jenkins pipelines enable this by giving alerts on failures or job successes. Being able to read and react quickly to failures is a key strength of a robust CI process. Jenkins can send emails, text or IM messages to key team members as needed, so they can take the necessary actions. The pipeline also shows a clear view of progress, so that it is visually obvious where an error has occurred. It can provide the output of that step, to aid a developer or tester in the debugging process.
We will go into more detail on the intricacies of the Jenkins pipeline, and pipelines in general, in later blog posts. Thanks for reading!