在Jenkins多configuration作业中复制文件

我正在设置一个环境来做一些testing。 我们的构build实际上发生在我们的Team Foundation Server(TFS)上,它也通过SSH产生了两个Linux版本。 我们构build的结果是6种不同的configuration,包括32位和64位的Windows和Linux(它是C ++代码,顶层是Python层)以及两个Python版本。 输出看起来像这样:

  • BuildXX
    • foolnx26
    • foolnx26-64
    • foolnx27
    • foolnx27-64
    • foowin27
    • foowin27-64testing

在testing奴隶,我想它看起来像这样:

  • $ WORKSPACE
    • foo …(只是其中之一)
    • testing

Test文件夹包含一堆Pythontesting脚本。 对于每个平台,我想复制testing文件夹,只复制该平台的适当的输出文件夹。 输出是相当大的,所以我想避免复制超过必要的。 我们希望在每次登记时运行这些testing。 我不打算改变我们如何构build代码,至less现在还没有,只是想添加一些额外的硬件testing。 为了覆盖我们所有的testing需求,我需要在Windows和Linux(32位和64位)上运行testing,以及我们的代码与其他硬件的交互组合。

基本要求是:

  • 需要在各种平台上运行。
    • 我正在使用多configuration(matrix)作业,这对路由子作业非常有效。
  • 只需将特定平台的输出复制到从站。
  • 要复制的文件将在Windows服务器上。
  • 奴隶是Windows和Linux
  • Jenkins将在成功时从TFS构build中调用(可能实际上是通过Python)
  • 每个TFS构build都有一个新的目录。 我需要将该目录指定为Jenkins的参数。

我已经尝试了几种方法,但似乎没有做我所需要的:

  1. 文件系统SCM插件。 我无法find一个方法来使用这个源目录的参数/variables。 另外,它似乎不适用于从Windows复制到Linux
  2. 复制到从属插件。 这可以复制文件,但不能到我想要的地方。 即使设置我自己的自定义“path是相对的”价值(我没有看到logging,只是偶然),我仍然最终在工作区文件夹下的额外的子目录。 使用matrix工作,那里已经有一堆文件夹。 这也是一个问题,因为我需要知道我在哪里设置像PYTHONPATH这样的东西来进行testing。
  3. 通过SSH插件发布我花了很多时间试图找出这一个,只是不能使其工作。 涉及到很多configuration,比我想要的要多得多。 pipe理从服务器上拉文件到从属机器(它是一个发布者…)似乎并不是真正的devise。 我想我是看了这个稍微倒退,但不能找出一个简单的方法,使其做我所需要的。

在这一点上,我可能只是写shell脚本代码来调用rsync来移动这些文件,就像我从我们的TFS构build中启动Linux构build。 好像我不应该这样做。 我只需要将两个索引(尽pipe不是相同的两个)从dynamic目录复制到每个从属设备。 似乎不是那种不寻常的function。 我错过了什么?

看看C opy Artifacts插件。 即使它说“…从另一个项目”,工件可以来自同一个项目(只要归档步骤已经完成)。

你将需要2个詹金斯工作。 一个是构建和归档工件,另一个是复制工件并运行测试。 对于测试作业的每个配置/轴,您可以指定要复制的工件。