Jenkins EnvInject构建步骤

时间:2013-08-06 08:33:33

标签: jenkins jenkins-plugins

我有詹金斯的工作,正在做以下事情(除其他事项外):

  1. 读取ENVIRONMENT和SERVERTYPE的用户输入
  2. 注入环境变量AGENT(最初为空白)作为要创建的构建步骤 新变量
  3. 执行shell作为构建步骤,根据输入的内容填充AGENT 在ENVIRONMENT和SERVERTYPE中
  4. 使用AGENT作为插件构建操作的插件输入
  5. 问题是AGENT的值似乎不会在“执行shell”构建步骤之外持续存在。当我尝试将其传递到post build动作插件时,它仍然是空白的。

    任何人都可以指出我做错了什么吗?我已经阅读了文档,但似乎无法弄明白。

2 个答案:

答案 0 :(得分:2)

您的问题是,无论您在shell脚本中设置的变量是什么,它们都无法实现。 对于任何进程都是如此:子进程(您的shell脚本)永远不会直接影响父进程(Jenkins执行程序客户端)的环境。

如果您需要保留数据,则需要将其存储在脚本之外;有很多选项,比如将其上传到服务器或将其存储在数据库中,最明显和最简单的选择是将其保存到文件中。

您甚至可以使用EnvInject支持的语法将值保存到“属性文件”,并在“属性文件路径”字段中指定路径。

答案 1 :(得分:0)

您需要使用要再次注入的环境变量的值填充属性文件,这样它们才能生存,直到构建后操作。属性文件通常驻留在作业的工作区中。

例如,使用以下步骤:

  1. 构建步骤"执行shell" :
  2. AGENT="My agent" echo AGENT=$AGENT > my.properties

    1. 构建步骤:"注入环境变量", 字段"属性文件路径": $WORKSPACE/my.properties

    2. 制作后的操作:"可编辑的电子邮件通知",字段"默认内容":

    3. Current Agent $AGENT Or ${ENV, var="AGENT"}