【发布时间】:2014-04-19 23:49:18
【问题描述】:
我正在设置一个环境来进行一些测试。我们的构建实际上发生在我们的 Team Foundation Server (TFS) 上,它还通过 SSH 生成了两个 Linux 构建。我们构建的结果是 6 种不同的配置,包括 32 位和 64 位的 Windows 和 Linux(它是 C++ 代码,顶部有一个 Python 层),以及两个 Python 版本。输出如下所示:
- 构建XX
- foolnx26
- 傻瓜26-64
- 傻瓜27
- 傻瓜27-64
- foowin27
- foowin27-64 测试
在测试奴隶上,我希望它看起来像这样:
- $工作空间
- foo...(只是其中之一)
- 测试
Test 文件夹包含一堆 Python 测试脚本。对于每个平台,我想复制 Tests 文件夹,并且只复制该平台的相应输出文件夹。输出非常大,所以我想避免复制不必要的内容。我们希望在每次签到时运行这些测试。我不想改变我们构建代码的方式,至少现在还没有,只是想添加一些额外的硬件测试。为了满足我们所有的测试需求,我需要在 Windows 和 Linux 上运行测试,包括 32 位和 64 位,以及与我们的代码交互的其他硬件的组合。
基本要求是:
- 需要在各种平台上运行。
- 我为此使用了多配置(矩阵)作业,它非常适合路由子作业。
- 只需将特定平台的输出复制到从站。
- 要复制的文件将位于 Windows 服务器上。
- 从属设备既是 Windows 又是 Linux
- Jenkins 将在 TFS 构建成功时被调用(实际上可能通过 Python)
- 每个 TFS 构建都有一个新目录。我需要将该目录指定为 Jenkins 的参数。
我尝试了几种方法,但似乎没有一种方法能满足我的需要:
- 文件系统 SCM 插件。 我找不到为此使用源目录的参数/变量的方法。此外,它似乎不适用于从 Windows 复制到 Linux
- 复制到从属插件。 这可以复制文件,但不能复制到我想要的位置。即使设置我自己的自定义“路径相对于”值(我没有看到记录,只是偶然发现它),我仍然在工作区文件夹下得到额外的子目录。使用矩阵作业,那里已经有一堆文件夹。这也是一个问题,因为我需要知道在哪里为我的测试设置 PYTHONPATH 之类的东西。
- 通过 SSH 发布插件 我花了很多时间试图解决这个问题,但无法让它发挥作用。涉及很多配置,比我想要的要多得多。它似乎并不是为了管理将文件从服务器拉到从机(它是发布者......)而设计的。我想我有点倒退了,但无法找到一种简单的方法让它满足我的需要。
此时,我可能只是要编写 shell 脚本代码来调用 rsync 来移动文件,类似于我从 TFS 构建中触发 Linux 构建的方式。看来我不应该这样做。我想要的只是将两个子目录(虽然不是相同的两个)从动态目录复制到每个从站。似乎没有那么不寻常的功能。我错过了什么吗???
【问题讨论】:
标签: linux windows file jenkins copy