我正在寻找一个非常简单的 JVM 项目(Java、Spring、Grails 等)部署工具,具有以下功能:
- 不需要专用服务器/代理/等,我想从一台开发人员机器(或 CI 服务器)作为简单的控制台命令运行部署
- 不需要任何特殊的服务器配置,也不应该为您进行服务器配置
- 只需使用 SCP 上传 WAR,或者最好使用 rsync(仅更新更改的文件)
- (理想情况下)静态文件上传到 s3/cloudfront
- 可以在远程服务器上运行命令(重新启动tomcat服务)
- 在服务器上存储几个最新版本,并能够回滚到其中任何一个(基本上应该是符号链接(symbolic link)的更新)
- 可以配置为使用不同的服务器(测试、登台和生产)
- (理想情况下)有 Maven 插件或 Grails 插件
- 支持并行上传到少量服务器
应该是这样的:
$ deploytool staging deploy
$ deploytool staging rollback
或
$ mvn deploytool:deploy -P staging
$ mvn deploytool:rollback -P staging
基本上它只是一个:
- 编译+测试+构建存档
- 在服务器上创建“日期”目录 (
/.../application/version-%date%/
) - 从本地机器上传 WAR 内容到此目录
- 更新之前的符号链接(symbolic link) (
/.../application/current/
->/.../application/version-%date%/
- 重新启动tomcat(
sudo service tomcat7 restart
) - 删除最旧版本的目录(仅保留最近 5 个版本,或最近 45 天的版本)
- 如果出现问题 - 将符号链接(symbolic link)更新到以前的版本(并重新启动 tomcat)
我看过 Puppet 和 JClouds,但似乎是不同的东西,更多的是关于集群配置,而不是部署。目前,我在一个项目中使用 Ruby Capistrano,在另一个项目中使用 bash 脚本。 Capistrano 不错,但需要安装 rvm、ruby、gems 等,对于非 ruby 团队来说效果不佳,并且需要对 java 项目进行大量定制。
所以,我想知道,是否有适用于 Java/JVM 项目的类似 Capistrano 的工具?
最佳答案
- 使用
maven-compiler-plugin
、maven-surefire-plugin
和maven-war-plugin
进行构建 - 使用
buildnumber-maven-plugin
创建具有当前时间戳值的属性 - 使用
wagon-maven-plugin
和生成的时间戳值将 war 上传到登台服务器 - 使用
sshexec-maven-plugin
启动shell脚本,该脚本将使用所选版本的应用程序重新启动tomcat
关于java - 基于Java的简单部署工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11616765/