使用Groovy创建一个Jenkins环境变量 [英] Creating a Jenkins environment variable using Groovy

查看:2292
本文介绍了使用Groovy创建一个Jenkins环境变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我认为这是另一个简单的问题,但我无法得到任何Web解决方案的工作。我的项目需要一个版本号。每个数字可以用'。'或'_'分隔。我想要一个只显示前两个数字的变量。

我试着编写一个创建Jenkins环境变量的groovy脚本。

我想要取前两位数字而不是整个字符串。

  //获取版本参数
def env = System.getenv()
def version = env ['currentversion']
def m = version =〜/ \d {1,2} /
env = ['miniVersion':m [0] .m [1]]

我是否可以正确地做这件事,我甚至可以创建一个新的环境变量,并且有更好的解决方案。

解决方案

Jenkins 1.x



(你已经提供),并将它作为'miniVersion'存储在作业的变量中。

  import hudson。 * 

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)
$)b
$ b //将变量添加到当前作业
Thread.currentThread()。executable.addAction(pa)

然后可以从其他构建步骤访问该变量。例如

  echo miniVersion =%miniVersion%

输出:

  miniVersion = 12.34 

我相信您需要使用System Groovy Script(仅在主节点上),而不是Groovy插件 - https://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin#Groovyplugin- GroovyScriptvsSystemGroovyScript

Jenkins 2.x



相信以前的( Jenkins 1。 x )行为因此安全公告 a> ...

解决方案(从安全咨询中解释)



可以恢复以前的行为通过设置系统属性 hudson.model.ParametersAction.keepU ndefinedParameters true 这可能是非常不安全的,仅作为短期解决方法。

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

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

eg

  java -Dudson .model.ParametersAction.safeParameters = miniVersion,FOO,BAR -jar jenkins.war 


I think this is another simple question but I couldn't get any of the web solutions to work. My project takes in a version number. Each number can be separated by a '.' or a '_'. I want a variable that only displays the first two numbers.

I tried writing a groovy script that creates a Jenkins environment variable.
I want to take the first two digits instead of the entire string.

//Get the version parameter
def env = System.getenv()
def version = env['currentversion']
def m = version =~/\d{1,2}/
env = ['miniVersion':m[0].m[1]]

Am I doing this correctly, can I even create a new environment variable, and is there a better solution to this.

解决方案

Jenkins 1.x

The following groovy snippet should pass the version (as you've already supplied), and store it in the job's variables as '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)

The variable will then be accessible from other build steps. e.g.

echo miniVersion=%miniVersion%

Outputs:

miniVersion=12.34

I believe you'll need to use the "System Groovy Script" (on the Master node only) as opposed to the "Groovy Plugin" - https://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin#Groovyplugin-GroovyScriptvsSystemGroovyScript

Jenkins 2.x

I believe the previous (Jenkins 1.x) behaviour stopped working because of this Security Advisory...

Solution (paraphrased from the Security Advisory)

It's possible to restore the previous behaviour by setting the system property hudson.model.ParametersAction.keepUndefinedParameters to true. This is potentially very unsafe and intended as a short-term workaround only.

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

To allow specific, known safe parameter names to be passed to builds, set the system property hudson.model.ParametersAction.safeParameters to a comma-separated list of safe parameter names.

e.g.

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

这篇关于使用Groovy创建一个Jenkins环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆