2

我有一份 Jenkins 工作,它正在做以下事情(除其他外):

  1. 读取 ENVIRONMENT 和 SERVERTYPE 的用户输入
  2. 注入环境变量 AGENT(最初为空白)作为构建步骤以创建新变量
  3. 根据在 ENVIRONMENT 和 SERVERTYPE 中输入的内容,执行 shell 作为构建步骤以填充 AGENT
  4. 使用 AGENT 作为插件的输入作为构建后操作

问题是 AGENT 的值似乎并没有在“执行 shell”构建步骤之外持续存在。当我尝试将它传递到构建后操作插件时,它仍然是空白的。

谁能指出我做错了什么?我已阅读文档,但似乎无法弄清楚。

4

2 回答 2

2

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

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

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

于 2013-08-27T12:17:02.003 回答
0

您需要使用要再次注入的环境变量的值填充属性文件,以便它们在构建后操作之前一直存在。属性文件通常驻留在作业的工作区中。

例如使用以下步骤:

  1. 构建步骤“执行外壳”:

AGENT="My agent" echo AGENT=$AGENT > my.properties

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

  2. 构建后操作:“可编辑电子邮件通知”,字段“默认内容”:

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

于 2016-10-18T11:36:43.917 回答