linux - 在 Jenkins 多配置作业中复制文件

标签 linux windows file jenkins copy

我正在设置一个环境来进行一些测试。我们的构建实际上发生在我们的 Team Foundation Server (TFS) 上,它还通过 SSH 生成两个 Linux 构建。我们构建的结果是 6 种不同的配置,包括 32 位和 64 位的 Windows 和 Linux(它是 C++ 代码,上面有一个 Python 层),以及两个 Python 版本。输出看起来像这样:

  • build XX
    • foolnx26
    • foolnx26-64
    • 傻瓜27
    • foolnx27-64
    • foowin27
    • foowin27-64 测试

在测试奴隶上,我希望它看起来像这样:

  • $工作空间
    • foo...(只是其中之一)
    • 测试

Test 文件夹包含一堆 Python 测试脚本。对于每个平台,我想复制 Tests 文件夹,并且只复制适合该平台的输出文件夹。输出非常大,所以我想避免复制不必要的内容。我们希望在每次 checkin 时运行这些测试。我不打算改变我们构建代码的方式,至少现在还没有,只是想添加一些额外的硬件测试。为了满足我们所有的测试需求,我需要在 32 位和 64 位 Windows 和 Linux 上运行测试,并结合我们的代码与之交互的其他硬件。

基本要求是:

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

我尝试了几种方法,但似乎没有一种能满足我的需要:

  1. 文件系统 SCM 插件。 我找不到为此源目录使用参数/变量的方法。此外,它似乎不适用于从 Windows 复制到 Linux
  2. 复制到从插件。 这可以复制文件,但不能复制到我想要的位置。即使设置我自己的自定义“路径相对于”值(我没有看到记录,只是偶然发现),我仍然在工作区文件夹下得到额外的子目录。使用矩阵作业,那里已经有一堆文件夹。这也是一个问题,因为我需要知道我在哪里为我的测试设置 PYTHONPATH 之类的东西。
  3. 通过 SSH 插件发布 我花了很多时间试图解决这个问题,但就是无法让它发挥作用。涉及很多配置,比我想要的要多得多。它似乎并不是为了管理从服务器到从属机器的拉取文件而设计的(它是一个发布者......)。我想我有点倒退了,但想不出一个简单的方法让它做我需要的。

在这一点上,我可能只是要编写 shell 脚本代码来调用 rsync 来移动文件,类似于我从 TFS 构建启动 Linux 构建的方式。看起来我不应该这样做。我想要的只是将两个 sudirectories(虽然不是相同的两个)从动态目录复制到每个从属目录。似乎没有那么不寻常的功能。我错过了什么吗???

最佳答案

看看 C opy Artifacts插入。即使它说“...来自另一个项目”,工件也可以来自同一个项目(前提是归档步骤已完成)。

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

关于linux - 在 Jenkins 多配置作业中复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22409206/

相关文章:

linux - "all devices are files"是什么意思?

c++ - 读取包含 16 位签名数据的文件

Linux 内核错误

linux - 回滚生产部署

linux - 对于以 pid 1 运行的 docker 应用程序,我必须采取哪些特殊预防措施?

c++ - 在 Windows 上构建 Boost

c++ - 在共享内存上分配原子

c# - 如何终止在 C# 中的 foreach 循环中启动的线程

c# - 如何检查目录是否共享?

c - 向文本文件写入 1024 字节时,文本文件变成二进制文件 (linux)