What are Jenkins Pipelines and What is a Jenkinsfile?

This article introduces Jenkins Pipeline and Jenkinsfile concepts for implementing CI/CD as code with build, test, and deploy stages. It also outlines practical benefits such as versioned pipeline logic, multi-branch workflows, and improved delivery reliability.

Jeff Pierce

November 6, 2017

‘Pipeline as code’ or defining the deployment pipeline through code rather than configuring a running CI/CD tool, provides tremendous benefits for teams automating infrastructure across their environments.

One of the most popular ways to implement a pipeline as code is through Jenkins Pipeline. Jenkins, an open source automation server, is used to automate tasks associated with building, testing, and deploying software.

Jenkins Pipeline is a suite of Jenkins features, installed as plugins, which enable implementation of continuous delivery pipelines, which are the automated processes for getting software from source control through deployment to end users.

Pipeline supports building Continuous Delivery (CDel) pipelines through either a Web UI or a scripted Jenkinsfile. Jenkinsfiles, using a domain specific language based on the Groovy programming language, are persistent files that model delivery pipelines “as code”, containing the complete set of encoded steps (steps, nodes, and stages) necessary to define the entire application life-cycle. Pipeline facilitates CI/CD as it’s the path to modeling and then automating software delivery; essentially becoming the intersecting point between development and operations. The Pipeline plugin, inspired by the build flow Plugin, also provides other capabilities like the ability to suspend and resume executing jobs, to manage pipeline code with source control, and to share libraries to extend the domain specific language support.

The most common basic pipeline described in a Jenkinsfile consists of three stages: Build, Test, and Deploy. The Build stage is typically where source code is assembled, compiled and packaged. Jenkinsfile is not a replacement for a build tool, but rather orchestrates the build and manages the resulting outputs through scripted steps. The Test stage, crucial to successful CI/CD processes, is enabled by a number of Jenkins plugins that facilitate test execution and results recording, which are visualized in the Web Dashboard UI. Finally the Deployment stage encompasses anything from publishing build artifacts to a management repository to pushing code to pre-production and production environments. Build jobs can be configured to stop upon any step failure, which increases build quality and reliability by not allowing failing code to progress through the deployment process, saving time and resources while reducing risk.

What are the Benefits of Jenkins Pipeline?

Using Jenkins Pipeline to automate CI/CD pipelines dramatically increases repeat-ability, reliability, efficiency, and quality. The Pipeline allows managing the process code like any other production code, facilitating iterative development for pipelines, along with access control, code review, audit trails, and a single source for truth that is review-able (and potentially an approval/promotion process) by multiple project members. Multi-branch pipelines are also possible to configure different jobs for different branches within a single project, eliminating the need for manual job creation and management and enabling automated job stop or suspension as needed. All of this results in consistency, reliability, efficiency, and increased quality.

Learn More!

If you want to learn more about how Jenkins Pipeline can help with your DevOps implementation and support Agile Development, and how to actually implement Jenkinsfile Pipelines in a hands-on workshop, register now for today!

Jeff Pierce

Jeff Pierce

Jeff Pierce is a Managing Consultant with Coveros, Inc., a software company that helps organizations accelerate the delivery of secure, reliable software. Jeff is a leader with over twenty years experience in information technology (IT) program/project management. Jeff is a SAFe(R) 4 Program Consultant, a certified Scrum Master, and is also a Project Management Professional (PMP). He has proven technical excellence in development and deployment of strategic web-based enterprise information systems utilizing cloud computing and continuous integration technologies. Jeff's experience also includes an extensive Software Quality Assurance (SQA) and test engineering background including building and managing test teams and test automation implementation across a variety of platforms, technologies, and industries. Jeff manages Coveros Training, and is a professional instructor, delivering Agile and Software Quality related courses nationwide.