Jenkinsスクリプトパイプラインでは、メソッドを作成して呼び出すことができます。
Jenkinsの宣言パイプラインでも可能ですか?そしてどうやって?
宣言型パイプラインの新しいバージョンはこれをサポートしていますが、これは以前は不可能でした(2017年中頃)。 groovyスクリプトから期待どおりに関数を宣言できます。
pipeline {
agent any
stages {
stage('Test') {
steps {
whateverFunction()
}
}
}
}
void whateverFunction() {
sh 'ls /'
}
このようなgroovy関数を作成し、gitに保存して、マネージライブラリとして構成する必要があります(jenkinsでも構成します)。
/path/to/repo-shared-library/vars/sayHello.groovy:
コンテンツ:
def call(String name = 'human') {
echo "Hello, ${name}."
}
次を使用して、パイプラインでこのメソッドを呼び出すことができます。
@Library('name-of-shared-library')_
pipeline {
agent any
stages {
stage('test') {
steps {
sayHello 'Joe'
}
}
}
}
出力:
[Pipeline] echo
Hello, Joe.
ライブラリに保持している既存の関数を再利用できます。
また、パイプラインでファイルにロードできるように、すべての機能を備えた個別のgroovyファイルを作成することもできます(物事を構造化してきれいに保つためだけです):
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
Blue Ocean GUIで表示できますが、Blue Ocean GUIを使用して編集すると、メソッド "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
}