当前位置: 首页 > 面试题库 >

使用Groovy创建Jenkins环境变量

茅高卓
2023-03-14
问题内容

我认为这是另一个简单的问题,但是我无法使用任何Web解决方案。我的项目有一个版本号。每个数字都可以用“。”分隔。或“
_”。我想要一个仅显示前两个数字的变量。

我尝试编写一个普通的html" target="_blank">脚本来创建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

詹金斯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


 类似资料:
  • 我正在构建Jenkins的Docker映像,并已将ENV变量传递给< code>jenkins.sh初始化文件: Dockerfile文件 詹金斯. sh 当我运行图像时,这些值可以完美地打印出来,但是我想在Jenkins初始化期间在Groovy脚本中使用它们。 以下在启动期间引发错误: 错误 警告:无法运行脚本文件:/var/jenkins_home/init.groovy.d/init_ecs

  • 我们有一个Jenkins构建,它在Jenkins1.596.2上成功运行,我们正在迁移到运行Jenkins2.60.1的新构建机器 作为构建配置的一部分,我们有一个可扩展的Choice参数,并使用系统Groovy Choice参数作为选择提供者。然后,我们使用Groovy脚本获取选择列表。 此Groovy脚本需要访问Jenkins构建环境变量之一,该变量设置在构建配置的全局属性部分(在环境变量下)

  • 问题内容: 我正在从已设置用户权限的用户那里运行Jenkins ,当我进入Jenkins Web界面时,在“ 系统属性” 窗口()中看到了一个不同的。 我已经使用Jenkins网站上的本地rpm在Centos上安装了Jenkins。我正在使用安装随附的启动脚本 谁能告诉我为什么会这样? 问题答案: 迈克尔 两件事情: 当詹金斯连接到计算机时,它将连接到外壳,而不是外壳(至少这是我注意到的-我可能错

  • 问题内容: 我正在使用Scriptler插件,因此可以在构建步骤中运行groovy脚本。我的Jenkins奴隶正在服务模式下的Windows上运行。使用脚本编辑器,我不需要使用Windows批处理脚本。 但是我很难在构建步骤中获取环境变量。 哪里是将env-瓦尔对詹金斯启动部分。但是,我想得到 如果要添加“执行Windows批处理命令”构建步骤: 有用。如果要添加具有相同设置的脚本程序脚本作为构建

  • 我使用脚本插件,所以我可以运行一个Groovy脚本作为构建步骤。我的Jenkins奴隶在服务模式下的窗口上运行。有了脚本,我不需要使用窗口批处理脚本。 但是我很难在构建步骤中获取环境变量…这是有效的: 其中 是 enkins 初创公司 env-vars 的一部分。但是,我想得到 如果我添加“执行 Windows 批处理命令”构建步骤: 它起作用了。如果我添加一个脚本脚本作为具有相同设置的构建步骤:

  • 我100%确定git是好的,分支是存在的。