jenkins - 在扩展选择参数中访问环境变量
问题描述
我想为扩展选择参数编写一个 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 脚本,它会提供我希望使用的参数列表?
解决方案
在 Jenkins 构建的env
环境中可用。当您输入参数时,扩展选择 groovy 脚本在构建之前运行。它在 GroovyShell 环境中运行,它所能做的就是运行一个简单的脚本来呈现参数的选择。例如,如果您正在创建多选参数,则生成选择的脚本可能是:
return ["DEV environment", "TEST environment", "PROD environment"]
所以你可以env.WORKSPACE
在你的 Jenkinsfile 或管道脚本中使用,但是在扩展的选择参数脚本框中,它没有被定义。
根据this这个答案,你应该能够使用类似的东西
System.getEnv().get('WORKSPACE')
但我无法让它做你想做的事。
推荐阅读
- reactjs - 使用 Xcode 12,链接器命令失败问题
- assembly - 重复检查过程,直到用户在 emu8086 中给出偶数十六进制数
- proxy - kubectl 配置设置代理
- swift - 如何在swift中使用情节提要根据标签文本更改图像视图约束
- c++ - 是否可以通过将模式设置为 ios::in 来使用 ofstream 来读取文件
- java - 无法在 Java 中对数组的元素执行 Bean 验证
- excel - 不要格式化总计行/列
- android - 在 AndroidManifest 中添加 FileProvider 和 Provider
- scala - 如何在主路由文件中使用多个带有路径参数的播放路由文件?
- kotlin - 如何实现位图功能