Certified Jenkins Engineer

Pipeline Structure and Scripted vs Declarative

Declarative vs Scripted Pipeline

In this article, we’ll explore the two primary approaches to defining Jenkins pipelines—Declarative and Scripted. Both rely on a shared Jenkinsfile and the Jenkins Pipeline subsystem under the hood. They use Apache Groovy and support Shared Libraries, but differ in syntax, flexibility, and ease of use.

Note

For complete syntax details, check out the Jenkins Pipeline Syntax Reference.

Scripted Pipeline

Scripted Pipelines give you maximum control by allowing a full Groovy script inside your Jenkinsfile. You can implement complex logic, conditional branched execution, and custom steps—ideal for highly dynamic or nonstandard workflows. However, this flexibility comes with a steeper learning curve, especially if you’re not familiar with Groovy or general programming concepts.

Key benefits:

  • Full access to Groovy language features
  • Fine-grained flow control and error handling
  • Ideal for advanced, dynamic CI/CD workflows

Prerequisites:

  • Solid programming skills in Groovy or Java
  • Comfort with scripting and manual pipeline management

Declarative Pipeline

Declarative Pipelines provide an opinionated, block-structured syntax. With clearly defined sections (pipeline, agent, stages, steps), you write less boilerplate and enforce consistency across your team. This makes it easier to onboard new users and maintain pipelines over time.

Key benefits:

  • Cleaner, human-readable syntax
  • Enforced structure reduces configuration drift
  • Great for standard CI/CD patterns and teams new to Jenkins

Limitations:

  • Less flexible for very complex scripting needs
  • Certain advanced Groovy constructs require switching to a script block

The image compares two types of pipeline projects: Scripted Pipeline, which is code-centric, flexible, and has a learning curve, and Declarative Pipeline, which is human-readable, easier to learn, and has limited complexity.

Feature Comparison

AspectScripted PipelineDeclarative Pipeline
SyntaxPure GroovyOpinionated DSL
ReadabilityLower (programmatic)Higher (block structure)
FlexibilityMaximum—use any Groovy featureLimited—focused on CI/CD steps
Error HandlingCustom try/catch/finally blocksBuilt-in post conditions
Learning CurveSteepGentle
MaintenanceManual consistency enforcementEnforced by structure

Choosing the Right Approach

Consider the following when selecting your pipeline style:

  • Workflow Complexity
    For intricate conditional logic, dynamic stages, or advanced Groovy usage, go with Scripted.

  • Team Experience
    If your team is new to Jenkins or prefers a guided syntax, choose Declarative.

  • Long-term Maintainability
    Declarative’s standardized blocks can simplify maintenance and improve readability.

Warning

Switching a large, existing pipeline between Declarative and Scripted can be time-consuming. Plan migrations and refactorings carefully.

Further Reading

Watch Video

Watch video content

Previous
Demo Invalidate Cache