如何访问 Jenkins 管道脚本中的参数?
How do I access parameters in a Jenkins pipeline script?
我正在尝试在管道脚本中使用作业参数,遵循 Parametrized pipeline using template documentation。
我的脚本:
node {
// Display the parameter value of the parameter name "myparam"
println myparam
sh "echo '${myparam}'"
}
但 Jenkins 找不到我的参数:
groovy.lang.MissingPropertyException: No such property: myparam for class: WorkflowScript
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getProperty(ScriptBytecodeAdapter.java:458)
at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.getProperty(DefaultInvoker.java:33)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
at WorkflowScript.run(WorkflowScript:3)
at ___cps.transform___(Native Method)
我错过了什么?
詹金斯版本:2.8
我的完整工作 xml 如下所示:
<flow-definition plugin="workflow-job@2.2">
<actions />
<description />
<keepDependencies>false</keepDependencies>
<properties>
<com.synopsys.arc.jenkinsci.plugins.jobrestrictions.jobs.JobRestrictionProperty plugin="job-restrictions@0.4" />
<hudson.model.ParametersDefinitionProperty>
<parameterDefinitions>
<hudson.model.StringParameterDefinition>
<name>myparam</name>
<description>bar</description>
<defaultValue>foo</defaultValue>
</hudson.model.StringParameterDefinition>
</parameterDefinitions>
</hudson.model.ParametersDefinitionProperty>
</properties>
<definition class="org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition" plugin="workflow-cps@2.23">
<script>node { //Dislay the parameter value of the parameter name "myparam" println myparam sh "echo '${myparam}'" }</script>
<sandbox>false</sandbox>
</definition>
<triggers />
</flow-definition>
首先定义您的自定义构建参数:
pipeline {
parameters {
string( name: 'BuildConfiguration',
defaultValue: 'Release',
description: 'Configuration to build (Debug/Release/...)')
}
在 Jenkins 作业页面单击 "Build with parameters" 后,它将自动显示在显示的页面中。
然后访问脚本里面的变量:
echo "Building configuration: ${params.BuildConfiguration}"
echo "Building configuration: " + params.BuildConfiguration
如果您的参数名称中包含点或连字符等特殊字符,您可以通过以下方式访问它:
pipeline {
stages {
stage('Test') {
steps {
echo "${params['app.jms.jndi-provider-url']}"
}
}
}
}
除了 Bjorn Reppens 的声明性管道示例之外,这里还有一个脚本化管道语法示例:
properties([
parameters([
string( name: 'BuildConfiguration',
defaultValue: 'Release',
description: 'Configuration to build (Debug/Release/...)')
])
])
node{
...
}
请注意,可以在节点元素内部或外部指定属性块。
然后,您可以像在声明性管道中一样通过 params.BuildConfiguration
访问您的参数
我正在尝试在管道脚本中使用作业参数,遵循 Parametrized pipeline using template documentation。
我的脚本:
node {
// Display the parameter value of the parameter name "myparam"
println myparam
sh "echo '${myparam}'"
}
但 Jenkins 找不到我的参数:
groovy.lang.MissingPropertyException: No such property: myparam for class: WorkflowScript
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getProperty(ScriptBytecodeAdapter.java:458)
at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.getProperty(DefaultInvoker.java:33)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
at WorkflowScript.run(WorkflowScript:3)
at ___cps.transform___(Native Method)
我错过了什么?
詹金斯版本:2.8
我的完整工作 xml 如下所示:
<flow-definition plugin="workflow-job@2.2">
<actions />
<description />
<keepDependencies>false</keepDependencies>
<properties>
<com.synopsys.arc.jenkinsci.plugins.jobrestrictions.jobs.JobRestrictionProperty plugin="job-restrictions@0.4" />
<hudson.model.ParametersDefinitionProperty>
<parameterDefinitions>
<hudson.model.StringParameterDefinition>
<name>myparam</name>
<description>bar</description>
<defaultValue>foo</defaultValue>
</hudson.model.StringParameterDefinition>
</parameterDefinitions>
</hudson.model.ParametersDefinitionProperty>
</properties>
<definition class="org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition" plugin="workflow-cps@2.23">
<script>node { //Dislay the parameter value of the parameter name "myparam" println myparam sh "echo '${myparam}'" }</script>
<sandbox>false</sandbox>
</definition>
<triggers />
</flow-definition>
首先定义您的自定义构建参数:
pipeline {
parameters {
string( name: 'BuildConfiguration',
defaultValue: 'Release',
description: 'Configuration to build (Debug/Release/...)')
}
在 Jenkins 作业页面单击 "Build with parameters" 后,它将自动显示在显示的页面中。
然后访问脚本里面的变量:
echo "Building configuration: ${params.BuildConfiguration}"
echo "Building configuration: " + params.BuildConfiguration
如果您的参数名称中包含点或连字符等特殊字符,您可以通过以下方式访问它:
pipeline {
stages {
stage('Test') {
steps {
echo "${params['app.jms.jndi-provider-url']}"
}
}
}
}
除了 Bjorn Reppens 的声明性管道示例之外,这里还有一个脚本化管道语法示例:
properties([
parameters([
string( name: 'BuildConfiguration',
defaultValue: 'Release',
description: 'Configuration to build (Debug/Release/...)')
])
])
node{
...
}
请注意,可以在节点元素内部或外部指定属性块。
然后,您可以像在声明性管道中一样通过 params.BuildConfiguration