Skip to content

[CI] Migrating Jenkinsfile from scripted to declartive pipeline style. #9042

@mikepapadim

Description

@mikepapadim

Currently, Jenkinsfile is in a scripted format.
Therefore, while more changes are suggested to improve the CI, like #8673, #8674 and #8675 the script will grow a lot.
So, I suggest migrating it to declarative style to have access to Jenkins helpers directly.

Pipeline syntax differences

Declarative pipelines always begin with the word pipeline. Scripted pipelines, on the other hand, always begin with the word node. Declarative pipelines break down stages into individual stages that can contain multiple steps. Scripted pipelines use Groovy code and references to the Jenkins pipeline DSL within the stage elements without the need for steps.

Declarative style example

pipeline {
    agent any
    stages {
        stage('Deploy') {
            steps {
                timeout(time: 3, unit: 'MINUTES') {
                    retry(5) {
                        sh ...
                    }
                }
            }
        }
    }
}

Pros:

  • A cleaner Jenkinsfile, easier to maintain, add features.
  • Direct access to declarative syntax, wrappers and functions from Jenkins syntax.
  • Can add post pipeline action to sent status on email, Slack, discord etc.

@areusch

cc @Mousius @driazati @gigiblender

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions