我需要设置一个包含以下内容的构建开发环境
我的应用程序在GlassFish应用程序服务器上运行。我注意到以上三种工具都带有嵌入式应用服务器。我已经下载了每个并尝试了它们但我有点担心我现在有4台应用服务器在运行。
我注意到他们每个人都提供war文件变体,可以放到现有的app服务器上。我认为使用“Collabnet Subversion Edge”我可能没有任何其他选项,因为它没有配备war安装选项。另外两个可以作为war文件下载。
在同一应用程序服务器上运行Nexus和Jenkins有什么缺点。有什么缺点吗?我正在调查的一个是如何配置它。似乎只有在应用程序服务器爆炸/取消归档war文件后才能配置它。
我也不愿意将这些war文件放到现有的Glassfish实例中,因为它用于正式测试。我想也许我应该安装Tomcat并将它用于这些工具。你会建议我坚持使用嵌入式服务器,还是只使用一台应用服务器并在必要时分配更多内存?这些工具中的任何一个都可以更好地与嵌入式服务器配合使用,还是没有任何区别?
由于
答案 0 :(得分:3)
所有3个工具都可以共享一个Glassfish(或类似的appserver)实例。问题是你负责设置合理的内存处理参数。如果一个应用程序导致Java OutOfMemory异常,则所有应用程序都可能受到影响: - (
如果您检查各种应用程序的启动程序脚本,您将发现每个应用程序都设置了Java堆和permgen设置的不同默认值。
我的建议是隔离每个应用并使用嵌入式应用服务器。 Jenkins和Nexus都很轻(我不使用Collabnet)。
答案 1 :(得分:2)
Hudson / Jenkins以及Nexus可以在Tomcat或Glassfish中作为war文件运行。但是对于它们两者,首选和最佳支持的选项是使用捆绑的应用服务器。
Nexus在内部使用Jetty。 Hudson 3(来自Eclipse的测试版)也是如此。老哈德森和詹金斯都在内部使用winstone。这两个都是非常轻量级的容器,并排运行它们的开销应该可以忽略不计。
您将从这些服务器实际执行的操作(运行构建,服务工件等)中获得更多影响。
因此,为了让您的生活更轻松,安装,升级以及运行时支持,我建议您坚持使用嵌入式默认应用服务器。
答案 2 :(得分:1)
我没有使用Jenkins,但我看到nexus和hudson在单个tomcat实例中运行作为单独的战争运行。对于nexus,war版本和独立版本之间的唯一区别是standalone包含jetty,因此你可以独立运行它......但这只是包装器。实际的nexus运行是一样的。
我认为詹金斯也是如此。因此,当您在一台服务器上运行4个实例时,没有理由运行4台服务器。应该工作得很好,因为他们都会有不同的网络背景。