How to create methods in Jenkins Declarative pipeline?
Newer versions of the declarative pipelines support this, while this was not possible before (~mid 2017). You can just declare functions as you'd expect it from a groovy script:
pipeline {
agent any
stages {
stage('Test') {
steps {
whateverFunction()
}
}
}
}
void whateverFunction() {
sh 'ls /'
}
You can create a groovy function like this and save it in your git which should be configured as managed library (Configure it in jenkins too):
/path/to/repo-shared-library/vars/sayHello.groovy:
Content:
def call(String name = 'human') {
echo "Hello, ${name}."
}
You can just call this method in your pipeline using:
@Library('name-of-shared-library')_
pipeline {
agent any
stages {
stage('test') {
steps {
sayHello 'Joe'
}
}
}
}
Output:
[Pipeline] echo
Hello, Joe.
You can reuse existing functions which you keep in your library.
You can also have separate groovy files with all your functions (just to keep things structured and clean), which you can load to file with pipeline:
JenkinsFile.groovy
Map modules = [:]
pipeline {
agent any
stages {
stage('test') {
steps {
script{
modules.first = load "first.groovy"
modules.first.test1()
modules.first.test2()
}
}
}
}
}
first.groovy
def test1(){
//add code for this method
}
def test2(){
//add code for this method
}
return this