在 Jenkins 脚本管道中,我们可以创建方法并调用它们。
有没有可能也在詹金斯的宣言中? 怎么可能?
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.
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 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
This worked for me.It can be view with Blue Ocean GUI but when I edit using Blue Ocean GUI it removes methods "def showMavenVersion(String a)".
pipeline { agent any stages { stage('build') { agent any steps { script { showMavenVersion('mvn version') } } } } } def showMavenVersion(String a) { bat 'mvn -v' echo a }