Automation 自动生成服务器并在远程计算机上安装和执行

Automation 自动生成服务器并在远程计算机上安装和执行,automation,hudson,client-server,jenkins,Automation,Hudson,Client Server,Jenkins,我目前正在开发一个测试自动化系统,并拥有一个Jenkins(Hudson)Buildserver。 在这里,我可以建立我的安装程序,并将获得一个可执行的安装程序作为*.exe 我可以将此*.exe自动放在网络共享上,所有连接的计算机都可以访问该网络共享 现在,我想在构建安装程序后执行以下操作。 我想把它部署到一台我可以在网络中选择并运行程序的计算机上 我正在寻找一个解决方案,它可以最好地集成在詹金斯,但无论如何,我可以运行任何程序在我的詹金斯服务器从批处理 那么,我需要哪些部分?您建议我如何实施

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

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

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

我正在寻找一个解决方案,它可以最好地集成在詹金斯,但无论如何,我可以运行任何程序在我的詹金斯服务器从批处理

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

我想主要的问题是:

如何最好地安装remote? 我应该在这里使用某种客户机-服务器体系结构,还是最好的方法是什么


谢谢你的帮助

一种方法是:在各种机器上运行Jenkins,您希望在这些机器上以从机的形式运行安装程序。然后编写两个作业:BUILDIT和RUNIT。第一个将构建您的项目(它可能只绑定到一台机器,或者绑定到各种从属设备),第二个将运行安装程序并测试安装(此作业将在您要测试的从属设备上运行)

现在有两种可能,上游做哪项工作,下游做哪项工作

(1) 它在上游。在构建结束时,它将通过向其传递安装程序的位置来调用RUNIT。您可以将安装程序放在BULDIT的BUILD_ID通过键入的目录中的共享驱动器上(这可能是最容易实现的选项,但不是通用的);或者RUNIT可以通过其permalink和wget或curl访问安装程序工件(在这种情况下,BUILDIT将构造并向RUNIT传递链接)。还有其他选择(如雇用),但实施起来更加困难

现在,RUNIT可以是一个多配置作业,它将触发所有从机上的安装/测试;或者,您也可以从BUILDIT传递一个参数,指定在哪个从属服务器上运行。然后,您可以将RUNIT绑定到参数指定的从属


(2) RUNIT在上游。您可以通过某种方式决定要在哪个从机上运行测试,并在该从机上调用RUNIT(请参见上文关于如何参数化要运行的从机的内容)。然后,RUNIT将通过参数化触发器插件调用BUILDIT,该插件作为构建步骤运行(而不是作为构建后步骤运行)。RUNIT应该将其BUILD_ID作为参数传递给BUILDIT,以便BUILDIT可以存储由其键入的安装程序工件。RUNIT将等待BUILDIT完成,使用BUILD_ID找到安装程序,然后继续进行安装和测试。

大多数安装程序提供“无头”安装模式,以便通过脚本进行访问。如果你的安装程序是这样的,那么自动化它应该是相当容易的。安装程序是我自己设计的。我不太清楚,这个headless模式是关于什么的?headless模式意味着它在没有GUI的情况下运行,您可以通过普通GUI指定的所有参数(安装目录,要安装的子功能,…)都通过命令行或配置文件传递,因此运行安装程序不需要GUI交互。非常全面。我喜欢第一个选项——觉得它更直观。我也很喜欢这个答案。它很有趣,我会尝试一下。还感谢您提供有用的插件参考!为什么ArtifactDeployer插件不是泛型的,或者它的确切含义是什么。很抱歉不能确定。@Byron LimTimothySteffan,这种方法不够通用,插件很好。考虑:您可能没有文件服务器;一些奴隶可能在防火墙后面;如果服务器上的文件不在您的控制之下,您就依赖于它—它们可以将其关闭以进行维护,或者更改其名称或目录结构。别误会我——这不是一个坏方法,否则我不会建议:)。如果这样做,请确保将服务器名称和路径定义为Jenkins范围的环境变量。然后,您将只有一个更改点,以防需要修改它们。