我有一个Lift应用程序,它打包为WAR存档,必须在Jetty下部署。但是,我希望能够自动执行一些任务:
我正在使用SBT,我不知道这对Puppet或类似的东西有多好。你会怎么做?
答案 0 :(得分:5)
我一直在看这个问题,希望有人会想出一个聪明的答案。既然他们没有,我想我会对自己对此事的看法感到满意。
据我所知,没有现有工具来自动化这些类型的部署,我认为这是因为有很多不同的场景需要处理。至少,你有:
我想1& 2是最容易找到通用工具的,如果这是我需要处理的唯一情况,我可能只是将Jenkins与应用程序一起部署。它可以非常容易地配置,以便在发生更改时从git分支中提取,构建代码并重新启动Jetty。等到3&但是,我认为所涉及的不同工具的数量以及协调它们的需要已经排除了任何类型的标准解决方案。我不认为这只是Java / Scala世界中的一个问题,因为我已经看过Github人员在他们为管理deployments of their Rails app而构建的自定义工具上的文章。
至于Puppet,我从未使用它的警告,似乎它可能是这种类型的过程的有用工具。您需要某种类型的中央协调器来处理群集,我相信Puppet可以帮助解决这个问题。
答案 1 :(得分:1)
您可以使用我们的产品BuildMaster来完成所有这些操作。我注意到你提到了Puppet,重要的是要注意这个工具是为基础设施自动化而设计的,而不是软件部署和交付。
在DevOps领域工作,我们发现通过团队协作保持软件和基础架构部署正交并同步非常重要(开发人员不是操作人员,反之亦然)。
要解决您的要点:
创建自动部署计划时,您可以根据需要指定服务器组并从组中添加/删除服务器。
您可以在生产之前使用任意数量的测试环境设置工作流,并且这些工作流可以包括在允许将构建提升到下一个环境之前传递测试的自动检查(即促销要求)。内置的用于确保传递单元测试,但您可以为任何命令行工具输出指定它们,甚至可以编写自定义扩展。
复制WAR文件就像使用SSH代理将工件部署到服务器一样简单。
答案 2 :(得分:0)
也看了这个问题。
实际上有同样的感觉:你不能考虑所有可能的环境,框架只允许你选择你想要的。因此,请使用任何令人愉快的部署工具并使用它。
(当然,SBT允许您测试,防止打包,并且有许多部署工具了解WAR-s和Jettyies。)
答案 3 :(得分:0)
这是典型的DevOps场景。我认为Jenkins将通过添加几个开源插件来帮助解决前两个需求,以获得对作业的更多控制,例如“CloudBees Build Flow”和“Node and Label parameter”。
Puppet或Chef肯定会帮助您配置一系列准备好软件配置的系统。它们几乎是等价的,但Chef支持更少的操作系统平台。
我建议你参考OpenStack的持续集成,尤其是项目选通和基础设施自动化:http://ci.openstack.org/
对于部署,还有urbancode uDeploy,它允许您在友好的GUI上设计自动部署过程,但现在已经商业化(由IBM收购)。实际上詹金斯可以做同样的事情,但需要更多的编码和脚本。