我认为这是另一个简单的问题,但是我无法使用任何Web解决方案。我的项目有一个版本号。每个数字都可以用“。”分隔。或“ _”。我想要一个仅显示前两个数字的变量。
我尝试编写一个普通的脚本来创建Jenkins环境变量。 我想使用前两位数字而不是整个字符串。
//Get the version parameter def env = System.getenv() def version = env['currentversion'] def m = version =~/\d{1,2}/ env = ['miniVersion':m[0].m[1]]
我是否正确执行此操作,甚至可以创建一个新的环境变量,并且对此有更好的解决方案吗?
以下groovy片段应传递版本(如您所提供的),并将其存储为作业的变量中的“ miniVersion”。
import hudson.model.* def env = System.getenv() def version = env['currentversion'] def m = version =~/\d{1,2}/ def minVerVal = m[0]+"."+m[1] def pa = new ParametersAction([ new StringParameterValue("miniVersion", minVerVal) ]) // add variable to current job Thread.currentThread().executable.addAction(pa)
然后可以从其他构建步骤访问该变量。例如
echo miniVersion=%miniVersion%
输出:
miniVersion=12.34
我相信您需要使用“系统Groovy脚本”(仅在主节点上),而不是“ Groovy插件”-https: //wiki.jenkins- ci.org/display/JENKINS/Groovy+plugin# Groovyplugin- GroovyScriptvsSystemGroovyScript
我相信以前的( Jenkins 1.x )行为由于此安全公告而停止工作…
它可以通过设置系统属性来恢复以前的行为hudson.model.ParametersAction.keepUndefinedParameters来true。 这可能非常不安全 ,仅作为短期解决方法。
hudson.model.ParametersAction.keepUndefinedParameters
true
java -Dhudson.model.ParametersAction.keepUndefinedParameters=true -jar jenkins.war
要允许将特定的已知安全参数名称传递给构建,请将系统属性设置hudson.model.ParametersAction.safeParameters为以逗号分隔的安全参数名称列表。
hudson.model.ParametersAction.safeParameters
例如
java -Dhudson.model.ParametersAction.safeParameters=miniVersion,FOO,BAR -jar jenkins.war