Jenkins版本:2.6,Linux
问题:参数化的构建变量在执行步骤" shell脚本"中不可见(作为env变量),它们曾经在旧的1.x jenkins版本中可见。
步骤:
在此shell脚本中以env变量访问这些参数。
echo" +++++++++++++++++++++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + / LI> 醇>
为了解决这个问题,我试图在"为运行准备一个环境"中创建一个groovy脚本。部分。我使用硬编码值创建了env变量,这些值作为env vars以shell脚本为基础。
def map = ['lib_name':'lib1']
map['lib_version'] = 'master'
return map
但是,没有硬编码,即使使用解决方案,我也无法访问这些变量值 How to retrieve Jenkins build parameters using the Groovy API?
我不知道还有什么必须做。有人可以建议吗?
--->根据对此问题的评论进行更新: 当我在jenkins中运行以下行时,我得到例外:
def buildVariablesMap = Thread.currentThread().executable.buildVariables
buildVariablesMap.each{ k, v -> println "${k}:${v}" }
FATAL: No such property: executable for class: hudson.model.OneOffExecutor
groovy.lang.MissingPropertyException: No such property: executable for class: hudson.model.OneOffExecutor
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
at org.codehaus.groovy.runtime.callsite.GetEffectivePojoPropertySite.getProperty(GetEffectivePojoPropertySite.java:66)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:296)
答案 0 :(得分:1)
我也遇到过类似的问题。这是一个对我有用的解决方案。我创建了一个方法,它总是需要并提供一个我需要的构建参数。
方法:
String readingBuildParameters(VariableResolver varRes, String paramName){
return varRes.resolve(paramName)
}
我在代码中如何使用它的行:
Build currentBuild = Executor.currentExecutor().currentExecutable
VariableResolver varResolver = currentBuild.getBuildVariableResolver()
df_parameter = readingBuildParameters(varResolver, "parameter_name")
BR, 佐尔坦
答案 1 :(得分:0)
要访问shell脚本中的参数:
在echo中评估它们:例如echo "${myParam}"
在代码中使用它们:def myNewvalueParam = ${myOtherParam}
答案 2 :(得分:0)
要从groovy脚本中检索构建变量作为构建步骤:
def buildVariablesMap = Thread.currentThread().executable.buildVariables
println buildVariablesMap['BUILD_NUMBER']
但请注意,为了使您的自定义/更改的环境变量可用于后续步骤,您应该使用EnvInject plugin,使用它可以定义一个步骤,将新的env变量导出为键值对,就像属性文件。
答案 3 :(得分:0)
这是jenkins中的一个错误,可能在凭证插件中: https://issues.jenkins-ci.org/browse/JENKINS-35921
感谢您的帮助!