将结果从Parameterized Trigger插件传回

时间:2013-01-25 03:47:19

标签: jenkins jenkins-plugins

我有2个工作:“Helper”和“Main”以及单个jenkins实例(主机和执行者)。

帮助程序管理第三方资源并为主作业做准备(准确地说 - 它为应用程序部署进行测试创建了环境。)

帮助程序作业的唯一工件是单个文件,其中包含专门为主作业准备的环境IP。

在这种情况下,如何将构建从Helper传回Main?

2 个答案:

答案 0 :(得分:8)

您说您只需要将带有IP的文件传递给“主”作业。如果您需要的只是IP,那么有更简单的方法(没有文件),我将描述两者。

将工件从一个作业传递到另一个作业

在“帮助程序”作业中,您需要从工作区归档该文件。

  1. 构建后操作中,选择存档工件
  2. 放置相对于工作区的路径。您可以使用通配符,或者如果文件名始终相同,则对其进行硬编码。
  3. 配置此作业以使用触发/调用其他项目构建构建步骤自动触发“主”作业。如果你没有这个插件,你可以得到它here
  4. 对于要构建的项目,请输入“主要”作业的名称
  5. 现在,在“Main”作业中,您需要从上一个(“Helper”)作业中复制此工件。

    1. 对于第一个构建步骤,请选择从其他项目复制工件构建步骤。如果你没有这个插件,你可以得到它here
    2. 对于项目名称,请输入“帮助程序”作业的名称
    3. 对于哪个版本,请选择最新成功构建
    4. 对于要复制的工件,请使用**/yourartifactname*.*您的工件名称将是您在“帮助程序”作业中配置的名称。在前面使用**/确保它在到达工件之前将忽略任何目录结构
    5. 对于目标目录,请在“主”作业的工作区中指定一个位置,此位置也将复制此文件。
    6. 选中标记展平目录,以便文件直接转到步骤5中指定的位置,否则它将保留其归档的目录结构(在“帮助程序”作业中)
    7. 现在,您的“主”作业在其工作区中具有来自“帮助者”作业的文件。像使用工作区中的任何其他文件一样使用它

      将变量从一个作业传递到另一个作业

      就像我提到的那样,如果您需要的只是一个IP地址,即在“帮助”作业中您在某个时间点作为变量,您只需使用触发器/将其发送到“主”作业在“帮助程序”作业的步骤3和4中配置的调用基于其他项目的构建步骤。在这种情况下,“主”作业不需要任何特殊配置。

      1. 配置“帮助程序”作业,使用触发/调用其他项目构建构建步骤自动触发“主”作业。如果你没有这个插件,你可以得到它here
      2. 对于要构建的项目,请输入“主要”作业的名称
      3. 点击添加参数按钮
      4. 选择预定义参数
      5. 键入VarForMain=$VarFromHelper,其中VarFromHelper是包含您的IP地址的“帮助程序”作业的环境变量,VarForMain是将在“主要”中设置的环境变量“这个价值的工作。没有理由说这些名称不能同名。
      6. 现在,在“主要”工作中,您可以像引用任何其他环境变量一样引用$VarForMain

答案 1 :(得分:2)

接受的答案在我的案例中没有帮助,但我想出了一个技巧:

  1. 使用shell命令

    创建一个主作业
    echo "PARAMS_FILE=${WORKSPACE}/build-${BUILD_NUMBER}.params" > "${WORKSPACE}/build-${BUILD_NUMBER}.params"
    
  2. 通过将子作业添加到构建步骤(而不是构建之后的步骤)来创建子作业

  3. 将文件作为参数源传递给子构建,并使构建更新文件,其脚本如下所示:

    echo "MY_VAR=some_value" >> "$PARAMS_FILE"
    
  4. 这样,所有后续工作都会根据其前任的结果更新环境。