如何让Java控制台在Jenkins中输出环境变量?

时间:2016-07-06 11:35:11

标签: jenkins output environment-variables

我是詹金斯的新手,尽管我发现了一些类似的问题,但是没有一个解决方案似乎对我有用。这对某些人来说可能看起来像是一个基本问题,但对我而言,这是一件非常重要的事情,我正在努力。

基本上,我构建了一个执行Java Selenium代码的项目,该代码在Jenkins'中显示会话ID。控制台输出以及我需要添加到环境变量中的内容,这些变量将在完成此项目后触发的项目中使用。

我尝试了一些Groovy脚本,但我认为我不太了解如何使用它,所以无论我给予什么,都不是我希望得到的。

有没有人做过类似的事情,提供一些如何实现这一目标的技巧?

非常感谢

1 个答案:

答案 0 :(得分:2)

有两个选项(理论上,其中一个不起作用,见下文2.)取决于打印是否在您的控制之下。

  1. 打印由您控制:

    • 将会话ID写入属性文件,例如from-build-log.properties

      sessionId=...
      
    • 添加构建后操作 Trigger parameterized build on other projects

        

      此插件触发其他项目的构建,其参数是预定义的,或由完成的构建提供。

           

      每个参数都将传递给目标项目,即使目标未参数化,或者没有定义该名称的属性。

      • 添加参数 属性文件中的参数
        • 使用文件中的属性from-build-log.properties
  2. 您无法控制

    • 添加构建后操作 Post build task

        

      此功能允许您根据构建日志输出关联在Hudson上执行某些任务的shell或批处理脚本。如果日志文本与构建日志文件中的某个位置匹配,则将执行该脚本。 [...]

           

      允许使用Java Regex,并且可以将组用作脚本参数。如果文本是“Last Build:#(\ d +)”并且脚本是“script.sh”,那么如果日志包含“Last Build:#4”行,则将调用脚本“script.sh 4”

      • 任务脚本

          

        [...]引用%1,..%n是允许的,并且将被正则表达式匹配的组替换。 %0是整场比赛。

      不幸的是,由于2013年以来出现了一个问题:[JENKINS-17268] Post build task plugin: Passing arguments does not work as documented

      ,因此无效
      • 构建 执行Windows批处理命令 命令

        @echo( & echo   CMD: sessionId=123456789
        
      • 制作后任务 任务

        • 记录文字sessionId=(\d+)
        • 脚本

          @echo( & echo   sessionId='%1'(!) of '%0'
          

      控制台输出:

      ...
      [Freestyle-project] $ cmd /c call C:\Windows\TEMP\hudson4684581005071706054.bat
      
        CMD: sessionId=123456789
      
      C:\Program Files (x86)\Jenkins\workspace\Freestyle-project>exit 0 
      Performing Post build task...
      Match found for :sessionId=(\d+) : True
      Logical operation result is TRUE
      Running script  : @echo( & echo   sessionId='%1'(!) of '%0'
      
      [Freestyle-project] $ cmd /c call C:\Windows\TEMP\hudson1525182929053902824.bat
      
        sessionId=''(!) of 'C:\Windows\TEMP\hudson1525182929053902824.bat'
      
      C:\Program Files (x86)\Jenkins\workspace\Freestyle-project>exit 0 
      POST BUILD TASK : SUCCESS
      END OF POST BUILD TASK : 0
      Finished: SUCCESS
      

      %0不是“整个匹配”,而是脚本的名称,与Windows命令行一样。 %1是空的。

      解决方法是:

    • 添加构建步骤 执行shell 命令

      sed -En 's/.*(sessionId=[0-9]+)/\1/p' \
        ../../jobs/${JOB_NAME}/builds/${BUILD_NUMBER}/log > from-build-log.properties
      
    • 添加构建后操作 在其他项目上触发参数化构建

      • 添加参数 属性文件中的参数
        • 使用文件中的属性from-build-log.properties