【问题标题】:Jenkins EnvInject build stepJenkins EnvInject 构建步骤
【发布时间】:2013-08-06 08:33:33
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: jenkins jenkins-plugins


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      您需要使用要再次注入的环境变量的值填充属性文件,这样它们才能在构建后操作之前继续存在。属性文件通常位于作业的工作区中。

      例如使用以下步骤:

      1. 构建步骤“执行 shell”:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-08-27
        • 1970-01-01
        • 2018-10-21
        • 1970-01-01
        • 2012-01-20
        • 2012-02-16
        • 2011-08-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多