一尘不染

使用Groovy创建Jenkins环境变量

jenkins

我认为这是另一个简单的问题,但是我无法使用任何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]]

我是否正确执行此操作,甚至可以创建一个新的环境变量,并且对此有更好的解决方案吗?


阅读 787

收藏
2020-07-25

共1个答案

一尘不染

詹金斯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.keepUndefinedParameterstrue
这可能非常不安全 ,仅作为短期解决方法。

java -Dhudson.model.ParametersAction.keepUndefinedParameters=true -jar jenkins.war

要允许将特定的已知安全参数名称传递给构建,请将系统属性设置hudson.model.ParametersAction.safeParameters为以逗号分隔的安全参数名称列表。

例如

java -Dhudson.model.ParametersAction.safeParameters=miniVersion,FOO,BAR -jar jenkins.war
2020-07-25