首页 > 解决方案 > 在扩展选择参数中访问环境变量

问题描述

我想为扩展选择参数编写一个 Groovy 脚本,该脚本将使用访问 WORKSPACE 变量。当我尝试:

List<String> artifacts = new ArrayList<String>()
artifacts.add(env.WORKSPACE)
asdf = env.WORKSPACE
println asdf
return artifacts

我收到以下错误:

No such property: env for class: _1775dc8d170bd01576ff2b650850017e
groovy.lang.MissingPropertyException: No such property: env for class: _1775dc8d170bd01576ff2b650850017e
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:307)
at _1775dc8d170bd01576ff2b650850017e.run(_1775dc8d170bd01576ff2b650850017e:2)
at groovy.lang.GroovyShell.evaluate(GroovyShell.java:585)
at com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition.executeGroovyScript(ExtendedChoiceParameterDefinition.java:727)
at com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition.executeGroovyScriptAndProcessGroovyValue(ExtendedChoiceParameterDefinition.java:709)
at com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition.computeValue(ExtendedChoiceParameterDefinition.java:676)
at com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition.computeEffectiveValue(ExtendedChoiceParameterDefinition.java:855)
at com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition.getParameterDefinitionInfo(ExtendedChoiceParameterDefinition.java:1451)
at jdk.internal.reflect.GeneratedMethodAccessor701.invoke(Unknown Source)

我究竟做错了什么?

另外,我是否可以从此插件调用 python 脚本,它会提供我希望使用的参数列表?

标签: jenkinsgroovyextended-choice-parameter

解决方案


在 Jenkins 构建的env环境中可用。当您输入参数时,扩展选择 groovy 脚本在构建之前运行。它在 GroovyShell 环境中运行,它所能做的就是运行一个简单的脚本来呈现参数的选择。例如,如果您正在创建多选参数,则生成选择的脚本可能是:

return ["DEV environment", "TEST environment", "PROD environment"]

所以你可以env.WORKSPACE在你的 Jenkinsfile 或管道脚本中使用,但是在扩展的选择参数脚本框中,它没有被定义。

根据this这个答案,你应该能够使用类似的东西

System.getEnv().get('WORKSPACE')

但我无法让它做你想做的事。


推荐阅读