我们正在尝试将maven部署到多个服务器,这些服务器只需一行即可构成我们的集群。
This solution工作得很好,除了我们需要重复运行它(每个服务器安装一次),我们的目标是在我们的集成服务器(jenkins)构建成功的工件之后执行它。目前,拥有矩阵功能并不是一个真正的选择。为什么我们只需要部署它,为什么每个服务器再次构建项目? (加上花在这上面的时间)
我们一直在尝试使用maven配置文件(每个服务器一个,并尝试一次激活它们,或者一个包含所有服务器的大型配置文件)但是没有运气这个选项,tomcat-maven-plugin不起作用那样。
Jenkins似乎有一个基于货物的部署插件,但一次只能处理一台服务器
有没有办法实现这个目标?要么使用maven-tomcat-plugin?或Jenkins / Hudson插件?
有关如何在成功构建后将战争部署到群集的专家的任何其他想法? (我试图避免使用shell脚本,只是因为可移植性问题)
答案 0 :(得分:1)
如果只需要一行就需要它,我建议执行一个CMD,Ant,bash等脚本作为“单行”,并使该脚本不止一件事。
例如,如果您使用Ant ...
你的一行可能是这样的:ant DeployToCluster
。并且您的build.xml文件可能包含目标DeployToCluster
,其中可能包含许多步骤。可以把它想象成重构一个做很多事情的代码方法。调用您的方法的代码变成了一行代码。
你不可能找到一个单独的命令来完成你所追求的目标,除非它只是执行一个其他人编写的你想要的现有脚本。
无论哪种方式,通常都能够一次将代码部署到各个服务器。这使您可以随时保持应用程序/服务,因为您一次只影响一个节点,而其他节点可以继续运行。它还有一个优点,即如果出现严重错误,您就不能重新启用集群中的一个节点并诊断一个服务器的问题,而不是将整个集群拆除错误。我们的脚本遵循的部署策略步骤是:
如果在任何步骤出现任何问题,我们总会为用户提供一个工作环境。