如何从节点块脚本管道调用函数
how to call a function from node block scripted pipeline
我试图理解下面这行为什么我们需要用 .call()
调用一个阶段
buildStage(slurper).call() 有人能解释一下这行是什么意思为什么我们不能用
buildStage(吸食者)
def call(String jsonString) {
node("unix") {
try {
def slurper = new JsonSlurperClassic().parseText(jsonString)
buildStage(slurper).call()
deployStage()
}catch(error) {
println ex.toString()
}finally{
sendEmail()
}
}
}
def buildStage(slurper){
stage ('Build') {
}
}
def deployStage(slurper){
stage ('Deploy') {
}
}
从上面的示例中可以看出 buildStage(slurper).call()
不是必需的,因为它可以像 buildStage(slurper)
一样调用,
如果方法有一个需要在调用时执行的闭包块,则需要 methondName.call() ,请参阅下面的示例
myPipeline.groovy
import groovy.json.JsonSlurperClassic
def call(String jsonString) {
node() {
try {
def slurper = new JsonSlurperClassic().parseText(jsonString)
buildStage(slurper)
println deployStage(slurper).call()
}catch(Exception ex ) {
throw ex;
}finally{
// do nothing
}
}
}
def buildStage(slurper){
stage ('Build') {
return {
println slurper
def r = 5 + 5
println r
}.call()
}
}
def deployStage(slurper){
stage ('Deploy') {
return {
return "The name is "+ slurper.name
}
}
}
詹金斯文件
def myJSON = '''
{ "name" : "XYZ"}
'''
myPipeline(myJSON)
我试图理解下面这行为什么我们需要用 .call()
调用一个阶段buildStage(slurper).call() 有人能解释一下这行是什么意思为什么我们不能用 buildStage(吸食者)
def call(String jsonString) {
node("unix") {
try {
def slurper = new JsonSlurperClassic().parseText(jsonString)
buildStage(slurper).call()
deployStage()
}catch(error) {
println ex.toString()
}finally{
sendEmail()
}
}
}
def buildStage(slurper){
stage ('Build') {
}
}
def deployStage(slurper){
stage ('Deploy') {
}
}
从上面的示例中可以看出 buildStage(slurper).call()
不是必需的,因为它可以像 buildStage(slurper)
一样调用,
如果方法有一个需要在调用时执行的闭包块,则需要 methondName.call() ,请参阅下面的示例
myPipeline.groovy
import groovy.json.JsonSlurperClassic
def call(String jsonString) {
node() {
try {
def slurper = new JsonSlurperClassic().parseText(jsonString)
buildStage(slurper)
println deployStage(slurper).call()
}catch(Exception ex ) {
throw ex;
}finally{
// do nothing
}
}
}
def buildStage(slurper){
stage ('Build') {
return {
println slurper
def r = 5 + 5
println r
}.call()
}
}
def deployStage(slurper){
stage ('Deploy') {
return {
return "The name is "+ slurper.name
}
}
}
詹金斯文件
def myJSON = '''
{ "name" : "XYZ"}
'''
myPipeline(myJSON)