如何设置与python脚本詹金斯环境变量

如何设置与python脚本詹金斯环境变量

问题描述:

我有詹金斯建立过程,我使用Python脚本来计算新的版本:如何设置与python脚本詹金斯环境变量

import string 
import os 
print 'Current version is ' + os.environ['POM_VERSION'] 
versionArr = string.split(os.environ['POM_VERSION'], '.') 
versionArr[2] = str(int(versionArr[2]) + 1) 
if int(versionArr[2]) > 100: 
    versionArr[2] = '0' 
    versionArr[1] = str(int(versionArr[1]) + 1) 
if int(versionArr[1]) > 100: 
    versionArr[0] = str(int(versionArr[0]) + 1) 
    versionArr[1] = '0' 
print versionArr 
print 'New version will be: ' + versionArr[0] + '.' + versionArr[1] + '.' + versionArr[2] 
os.environ['NEW_POM_VERSION'] = versionArr[0] + '.' + versionArr[1] + '.' + versionArr[2] 

然后我想运行

versions:set -DnewVersion=${NEW_POM_VERSION} -DgenerateBackupPoms=false 

在不同的步骤。但${NEW_POM_VERSION}保持不变,并不会转换为我设定的值。

我在试图以错误的方式调用变量。我也尝试使用$NEW_POM_VERSION哪些没有工作以及

所以我如何正确地将变量导出到我的环境。

谢谢。

詹金斯为每个构建步骤(和构建后步骤)都产生了一个新的环境。在其中设置一个值不会被保留。您需要EnvInject plugin

  • 在您的python脚本中,将最终值写入属性文件,格式为param=value
  • 接下来,配置一个EnvInject构建步骤以从该属性文件加载变量。
  • 此时,那些加载的属性将作为环境变量可用于此作业的所有其他构建步骤/构建后步骤。
+0

我知道这有点偏离主题。但是环境变量在构建过程中被限制了吗?我无法改变一些重要的系统变量吗? – Gleeb 2014-08-27 15:34:29

+1

是的,这就是生成构建步骤的单独环境的全部原因:因此,您不能**弄乱系统(以及其他正在运行的Jenkins作业)。当然,如果你使用'setx'或类似的东西,你可以故意破坏它。 – Slav 2014-08-27 16:08:02