jenkins pipeline-函数中的参数-缺少必需的上下文类hudson.FilePath
我试图将函数的返回值作为参数传递jenkins pipeline-函数中的参数-缺少必需的上下文类hudson.FilePath,jenkins,jenkins-pipeline,jenkins-groovy,Jenkins,Jenkins Pipeline,Jenkins Groovy,我试图将函数的返回值作为参数传递 @NonCPS def getLastRelease() { def RES = sh(script: '''cat version''', returnStdout: true).trim() return RES } pipeline{ parameters { choice(name: 'RELEASE_VERSION', choices: '${getLastRelease()}', description
@NonCPS
def getLastRelease() {
def RES = sh(script: '''cat version''', returnStdout: true).trim()
return RES
}
pipeline{
parameters {
choice(name: 'RELEASE_VERSION', choices: '${getLastRelease()}', description: 'desc')
}
}
但由于某些原因,它不起作用-如果我尝试:
'${getLastRelease()}'
我得到一个错误:
持久-73075a87/script.sh:第1行:${getLastRelease()}:错误
替代品
如果我使用:
"${getLastRelease()}"
我得到一个错误:
【管道】管道起点【管道】sh【管道】管道终点
org.jenkinsci.plugins.workflow.steps.MissingContextVariableException:
缺少必需的上下文类hudson.FilePath可能是您忘记了
要使用提供此功能的步骤包围代码,例如:node,
dockerNode
你需要这个:
@NonCPS
,因为NonCPS起作用节点{…}
块中getLastRelease()
,参数不带引号或大括号def getLastRelease() {
node {
def RES = sh (script: 'cat version', returnStdout: true).trim()
return RES
}
}
pipeline {
agent any
parameters {
choice(name: 'RELEASE_VERSION', choices: [getLastRelease(), <more choices, ...>], description: 'desc')
}
}
def getLastRelease(){
节点{
def RES=sh(脚本:“cat版本”,返回stdout:true)
返回RES
}
}
管道{
任何代理人
参数{
选项(名称:'RELEASE_VERSION',选项:[getLastRelease(),],说明:'desc')
}
}
我不能完全确定您是否可以或希望为用户输入参数提供动态选择。默认值当然可以,但选择不多。我想得到发布版本,它实际上是由bash脚本生成的,我希望它是默认选项。脚本是正确的,我能够在管道中回显此值RES=getLastRelease()
回显“${RES}”
,但由于某些原因,它对参数不起作用如果您希望它成为默认值,那么您需要使用defaultValue
键,我得到了非常相同的错误hudson.FilePath丢失
Ok,那么您可能需要使用完整的参数类来完成此操作。节点{}和不带大括号的caling函数完成了此操作。谢谢