【问题标题】:how to set Jenkins env variable with python script如何使用 python 脚本设置 Jenkins 环境变量
【发布时间】:2014-08-27 14:48:29
【问题描述】:

我有一个 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,但效果不佳

那么我应该如何将变量正确导出到我的环境中。

谢谢。

【问题讨论】:

    标签: python maven jenkins


    【解决方案1】:

    Jenkins 为每个构建步骤(和构建后步骤)生成一个新环境。在其中设置一个值不会持久化到其余部分。

    您需要EnvInject plugin

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

    【讨论】:

    • 我知道这有点离题了。但是环境变量被限制在构建过程中吗?有没有办法改变一些重要的系统变量?
    • 是的,这就是为构建步骤生成单独环境的全部原因:这样您就不能弄乱系统(以及其他正在运行的 Jenkins 作业)。当然你可以故意破坏它,如果你使用setx或类似的东西。
    猜你喜欢
    • 1970-01-01
    • 2020-04-05
    • 2013-02-06
    • 2013-06-08
    • 1970-01-01
    • 2012-01-19
    • 2020-05-03
    • 2020-11-21
    相关资源
    最近更新 更多