如何用Python脚本设置Jenkins环境变量

6 投票
1 回答
11664 浏览
提问于 2025-04-18 18:43

我有一个Jenkins的构建流程,使用一个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,但也不行。

那我应该怎么正确地把这个变量导出到我的环境中呢?

谢谢。

1 个回答

5

Jenkins在每个构建步骤(以及构建后的步骤)中都会创建一个新的环境。在一个步骤中设置的值不会保留到其他步骤中。

你需要使用EnvInject插件

  • 在你的Python脚本中,把最终的值写入一个属性文件,格式是param=value
  • 接下来,配置一个EnvInject构建步骤,从这个属性文件中加载变量。
  • 到这个时候,这些加载的属性就可以作为环境变量在这个任务的所有其他构建步骤和构建后步骤中使用了。

撰写回答