【问题标题】:Automated Build Server and Installing and Executing on Remote machine自动构建服务器并在远程机器上安装和执行
【发布时间】:2012-07-12 15:49:13
【问题描述】:

我目前正在开发一个测试自动化系统,并拥有一个 Jenkins (Hudson) Buildserver。 在这里我可以构建我的安装程序,并将获得一个可执行的安装程序 *.exe。

这个 *.exe 我可以自动放在网络共享上,所有连接的计算机都可以访问。

现在我想在构建安装程序后执行以下操作。 我想将它部署到我可以在网络中选择的计算机上并运行程序。

我正在寻找可以最好地集成到 Jenkins 中的解决方案,但无论如何我可以在我的 Jenkins 服务器上批量运行任何程序。

那么我需要哪些部分,您建议我如何实现它? 当然,该解决方案在未来应该是可扩展的,并且可能需要 Jenkins 和其他 PC 之间进行更多的通信。

我猜主要问题是:

如何最好地安装遥控器? 我应该在这里使用某种客户端服务器架构还是最好的方法?

感谢您的帮助!

【问题讨论】:

  • 大多数安装程序提供“无头”安装模式,以便通过脚本访问。如果您的安装程序这样做了,那么自动化它应该相当容易。
  • 安装程序来自我自己。我不太确定,这个无头模式是关于什么的?
  • 无头模式意味着它在没有 GUI 的情况下运行,您可以通过通常的 GUI 指定的所有参数(安装目录,要安装的子功能,...)通过命令行或配置传递文件,因此运行安装程序不需要 GUI 交互。

标签: automation hudson client-server jenkins


【解决方案1】:

一种方法是:在您希望在其上运行安装程序的各种机器上运行 Jenkinsdistributively 作为从属设备。然后编写两个作业:BUILDITRUNIT。第一个将构建您的项目(它可能仅绑定到一台机器或多个从站),第二个将运行安装程序并测试安装(此作业将在您要测试的从站上运行)。

现在有两种可能性,上游和下游做哪个工作。

(1) BUILDIT 在上游。在构建结束时,它将通过 Parameterized Trigger Plugin 调用 RUNIT,并将安装程序的位置传递给它。您可以通过ArtifactDeployer plugin 将安装程序放在由BULDIT 的BUILD_ID 键入的目录中的共享驱动器上(这可能是最容易实现的选项,但不是通用的);或 RUNIT 可以通过 wget 或 curl 的永久链接访问安装程序工件(在这种情况下,BUILDIT 将构建并传递给 RUNIT 链接) .还有其他选择(例如使用Jenkins Python Remote Access API),但实施起来比较困难。

现在,RUNIT 可以是一个多配置作业,它将触发所有从属设备上的安装/测试;或者,您也可以从 BUILDIT 传递一个参数,指定要在哪个从属设备上运行。然后,使用NodeLabel Parameter plugin,您可以将 RUNIT 绑定到参数指定的从站。

(2) RUNIT 在上游。您以某种方式决定要运行测试的从属设备并在该从属设备上调用 RUNIT (请参阅上文,了解如何参数化要在其上运行的从属设备)。 RUNIT 然后将通过 Parameterized Trigger Plugin 调用 BUILDIT 作为构建步骤(而不是作为构建后步骤)运行。 RUNIT 应该将其 BUILD_ID 作为参数传递给 BUILDIT,以便 BUILDIT 可以存储由它键入的安装程序工件。 RUNIT 将等待 BUILDIT 完成,使用 BUILD_ID 找到安装程序,然后继续安装和测试。

【讨论】:

  • 非常全面。我喜欢第一个选项 - 认为它更直观。
  • 我也很喜欢这个答案。这很有趣,我会尝试一下。也感谢有用的插件参考!
  • 为什么 ArtifactDeployer 插件不是通用的或者这到底是什么意思。很抱歉不确定。
  • @Byron-LimTimothySteffan,方法不够通用,插件很好。考虑:您可能没有文件服务器;一些从站可能在防火墙后面;如果文件服务器不受您的控制,则您依赖于 IT - 他们可以将其关闭以进行维护,或更改其名称或目录结构。不要误会我的意思 - 这不是一个坏方法,否则我不会建议它:)。如果你这样做 - 确保将服务器名称和路径定义为 Jenkins 范围的环境变量。然后,您将只有一个更改点,以防您需要修改它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多