Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Learning Jenkins v2.x Pipeline

DZone's Guide to

Learning Jenkins v2.x Pipeline

This tutorial will show you the basic steps for getting a Jenkins pipeline up and running and using it in your continuous integration/deployment workflow.

· DevOps Zone ·
Free Resource

Learn how integrating security into DevOps to deliver "DevSecOps" requires changing mindsets, processes and technology.

This is about re-tracing to the state in time, about a year and half back, that demanded me (with little or no choice but) to acquire a new set of skills - set up new projects in Jenkins v2.x Pipeline with no formal training in pipelines, and likewise, no prior experience in Java programming. Looking back to that situation and trying to understand what resources were available, how and where I got started, mistakes and pitfalls (quite a common occurrence, then and now as well) that helped me to kick-start this journey which is, in progress still, very much.

Of course, some of the references listed here are quite recent (like CloudBees offerings) while some of them (Pipeline Examples) have evolved or are growing with contributions from the community.

What Was I Looking For?

Equipped with basic knowledge of programming in Python and Shell, but absolutely zero in Java or Groovy, it was (at times, even now) absolutely adventurous to start with. But where to start and how to start being productive?

The objective of this article is to point you to some of the resources to get started with Jenkins Pipelines.

Set Up Jenkins Playground

For very obvious reasons, Jenkins in production isn't a toy thing to play around, so try and set up a local instance of Jenkins on a desktop or laptop. With this approach, a fresh set of challenges arises - install Jenkins as .war (web archive) or Docker container, or spin up a Virtual Machine and install Jenkins in it - what to choose from these options? While there are several other ways and means to achieve this, my personal choice was the VM route.

Enter Pipeline

With the chosen approach to have a test instance of Jenkins settled, the next step (no pun on Pipeline steps!) is to initiate Pipeline style builds using Jenkinsfile (pipeline workflow script).

It was quite an astonishing array of terminologies that can be, at times, perplexing -- pipeline, workflow, Groovy, DSL, step, node, Jenkinsfile, so on and so forth. Persist and persevere.

The simplest thing to do is to start with a few built-in Pipeline scripts -- available in the "Definition" section of the "Pipeline" tab.

Sample pipeline scripts

Hold on there -- the sample scripts provided here are basic and they are in "imperative" or "scripted" style of Groovy DSL. There are no examples of the "opinionated" Declarative style scripts. And, this is the current state, too; if you happen to install the latest (LTS or bleeding-edge) version of Jenkins with the standard suite of plugins. 

If you are curious as to why there are two different styles of writing Pipeline-as-code, look here.

Continuous Learning

Replay

Okay, now that I've started by copying, verbatim, a few lines of pipeline script (Groovy DSL), there should be a method to try out (in a repetitive manner) various basic steps detailed in the Pipeline documentation. This is where "Replay" came to assist me.

Edit and Run

This will open up a small editor window with the version of the workflow script that was used to execute the build job. Now, this is where it gets interesting. Just below the editor window is a link titled "Pipeline Syntax."

Syntax Reference

Snippet Generator

If you click on this link, Pipeline Syntax, that's displayed at the bottom of the in-line editor (shown in the Replay window), it will open the "Snippet Generator," along with several other options -- on the left-hand side, there is a link to exhaustive documentation on various steps, then the references to Global variables, and how to setup IntelliJ editor for Groovy DSL.

steps and variables reference

Snippet generator is a very handy tool -- you can select the Pipeline step of your choice and then generate snippet code which can then be reused in your workflow script.

Snippet Generator

Not all plugins are pipeline ready, while a few plugins are compatible and expose steps that can be used in Pipeline script. To know that list of compatible plugins, visit this page.

Pipeline Examples

Another resource that's noteworthy of mention is the numerous snippet of Pipeline code that's maintained here, with generous contributions from various folks.

CloudBees Offering(s)

Here are few tips on how to get started with Pipeline. 

Best Practices

As is applicable to any learning methodology, it is good to know the pitfalls to avoid and how best to keep away from bad choices; best practices are outlined here.

Learn how enterprises are using tools to automate security in their DevOps toolchain with these DevSecOps Reference Architectures.

Topics:
jenkins ,devops ,pipelines ,ci/cd

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}