2012-07-06 33 views
2

我不需要如下:阅读控制台日志行/值后设置一个变量詹金斯 - 或 - 使用脚本中使用的变量/命令什么詹金斯称

  1. 如何设置詹金斯环境变量或
  2. 如何在Jenkins/windows shell/ant/etc脚本中使用环境变量。

我需要的是与之相反的。

总结: 1.我有詹金斯作业:ABC_Build 2.此作业调用一个bat文件(/它调用一个ANT代码/靶用于包装构建 版本)。当我们创建一个构建时,这个工作知道什么是新的构建标签名称,并且ANT正在将它存储在名为“new.build.label”的变量中。使用的文件是build.xml。

(注新手用户:如果你想调用许多Windows命令,它创建一个Windows外壳),那么(.BAT/.CMD或 命令,你应该使用称之为“叫
script.bat -Dparam1 -Dparam2 ....“方式)。

  1. 现在,这种作业调用一个另一个bat文件(它调用一个ANT代码/目标),并使用该参数值中的一个,其 得到由第一bat文件/ ANT包目标 呼叫产生(即“new.build.label”)。由于这是一个独立的.bat命令调用以调用ANT代码/目标的新的 会话,我需要在此步骤的 调用期间传递“new.build.label”的值。这里使用的文件是deploy.xml。

  2. 基本上,我想看看如何在Jenkins中设置一个变量,通过使用: a。阅读我Jenkins作业的控制台输出,因为我在标准输出/控制台输出中回显了新建标签的值 。 b。任何其他方式,我可以使用“new.build.label”ANT 变量(一旦第一个.bat/ANT包目标完成)设置jenkins变量,并且我准备好拨打 第二个.bat/.cmd/ANT呼吁进行部署。不幸的是,我不能同时做两个 包/部署。

    我也没有兴趣知道我为什么不能调用对象的部署,从第一ANT 会话时,我已经知道了“new.build.label”的值作为我的主要要求是:

    HOW使用Jenkins所称的脚本之一(ANT/Jelly/Groovy/Maven /等)使用的“变量”来设置jenkins变量。

回答

3

您可以通过EnvInject plugin在Jenkins构建步骤之间传递环境变量。在您的特定情况下,下面可能是最好的办法:

  1. 第一ANT应该呼应new.build.label成一个属性文件,可以通过EnvInject插件,例如读取:

    <echo message="new.build.label=${new.build.label}" file="envars.props" /> 
    
  2. 创建进样的环境变量生成步骤和“属性文件路径”设置为envars.props(确保你正确处理路径)。然后new.build.label将作为其余构建步骤的环境变量提供。

顺便说一下,我认为从Jenkins的批处理文件中调用ANT并不是一个好习惯。改为使用ANT构建步骤。

+0

谢谢。比方说,詹金斯的工作是成功创建构建,并将构建的结果存储在一个名为“publish.label”的变量中,ANT在构建过程中使用它。现在我想在Jenkins的“编辑电子邮件通知”主题行中发送此值。我怎样才能做到这一点? – 2012-12-22 00:34:54