在jenkins脚本管道中,我们可以创建方法并可以调用它们。
是否可以在Jenkins声明性管道中使用?怎么样?
答案 0 :(得分:27)
声明性管道的较新版本支持这一点,而在此之前(2017年中期)这是不可能的。你可以像一个groovy脚本那样声明函数:
pipeline {
agent any
stages {
stage('Test') {
steps {
whateverFunction()
}
}
}
}
void whateverFunction() {
sh 'ls /'
}
答案 1 :(得分:8)
你可以像这样创建一个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.
您可以重复使用保存在库中的现有功能。
答案 2 :(得分:6)
您还可以使用具有所有功能的单独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
答案 3 :(得分:2)
这对我有用。它可以在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
}