詹金斯 1.x
下面的 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
詹金斯 2.x
我相信以前的(Jenkins 1.x)行为由于这个安全公告而停止工作......
解决方案(从安全咨询中转述)
hudson.model.ParametersAction.keepUndefinedParameters
可以通过将系统属性设置为来恢复以前的行为true
。这可能非常不安全,并且仅用作短期解决方法。
java -Dhudson.model.ParametersAction.keepUndefinedParameters=true -jar jenkins.war
要允许将特定的已知安全参数名称传递给构建,请将系统属性设置hudson.model.ParametersAction.safeParameters
为以逗号分隔的安全参数名称列表。
例如
java -Dhudson.model.ParametersAction.safeParameters=miniVersion,FOO,BAR -jar jenkins.war
在 groovy 中这两行应该这样写:
System.setProperty("hudson.model.ParametersAction.keepUndefinedParameters","true");
System.setProperty("hudson.model.ParametersAction.safeParameters","miniVersion,FOO,BAR");