2

我不需要以下内容:

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

我需要的是相反的。

摘要: 1. 我有一个 Jenkins 工作:ABC_Build 2. 这个工作调用一个 .bat 文件(它调用一个 ANT 代码/目标来打包/构建一个构建)。当我们创建一个构建时,这项工作知道新的构建标签名称是什么,并且 ANT 将它存储在一个名为“new.build.label”的变量中。使用的文件是 build.xml。

(给新手用户的提示:如果你想调用许多 Windows 命令(.bat / .cmd 或创建 Windows shell 的命令),那么你应该使用“call
script.bat -Dparam1 -Dparam2 ....”来调用它方法)。

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

  2. 基本上,我试图看看如何在 Jenkins 中设置一个变量,或者使用:当我在标准输出/控制台输出中回显新构建标签的值时,读取我的 Jenkins 工作的控制台输出。湾。任何其他方式,我可以使用“new.build.label”ANT 变量设置 jenkins 变量(一旦第一个 .bat / ANT 包目标完成),我准备调用第二个 .bat / .cmd / ANT 调用进行部署。不幸的是,我不能同时进行打包/部署。

    当我已经知道“new.build.label”的值因为我的主要请求是:

    如何使用 Jenkins 调用的脚本之一(ANT/Jelly/Groovy/Maven/etc)使用的“变量”设置 jenkins 变量。

4

1 回答 1

3

您可以通过EnvInject 插件在 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 构建步骤。

于 2012-07-08T10:03:01.767 回答