2

我正在为 JVM 项目(Java、Spring、Grails 等)寻找一个非常简单的部署工具,具有以下功能:

  • 不需要专用服务器/代理/等,我想从一台开发人员机器(或 CI 服务器)作为简单的控制台命令运行部署
  • 不需要任何特殊的服务器配置,也不应该为您进行服务器配置
  • 只需使用 SCP 或理想情况下使用 rsync 上传 WAR(仅更新已更改的文件)
  • (理想情况下)静态文件上传到 s3/cloudfront
  • 可以在远程服务器上运行命令(重新启动 tomcat 服务)
  • 在服务器上存储一些最新版本,并能够回滚到其中的任何一个(基本上它应该是符号链接的更新)
  • 可以配置为使用不同的服务器(测试、登台和生产)
  • (理想情况下)有一个 Maven 插件或 Grails 插件
  • 支持并行上传到少数服务器

应该是这样的:

$ deploytool staging deploy 
$ deploytool staging rollback

或者

$ mvn deploytool:deploy -P staging
$ mvn deploytool:rollback -P staging

基本上它只是一个:

  1. 编译 + 测试 + 构建存档
  2. 在服务器上创建“日期”目录 ( /.../application/version-%date%/)
  3. 将 WAR 内容上传到这个目录,从本地机器
  4. 从以前的更新符号链接(/.../application/current/- >/.../application/version-%date%/
  5. 重启tomcat ( sudo service tomcat7 restart)
  6. 删除最旧版本的目录(仅保留最近 5 个版本,或最近 45 天的版本)
  7. 如果有问题 - 将符号链接更新到以前的版本(并重新启动 tomcat)

我看过 Puppet 和 JClouds,但似乎是不同的东西,更多的是关于集群配置,而不是部署。目前我在一个项目中使用 Ruby Capistrano,在另一个项目中使用 bash 脚本。Capistrano 很好,但需要安装 rvm、ruby、gems 等,对于非 ruby​​ 团队来说效果不佳,并且需要对 java 项目进行大量自定义。

所以,我想知道,有没有类似 Capistrano 的 Java/JVM 项目工具?

4

1 回答 1

2
  1. 使用maven-compiler-plugin,maven-surefire-pluginmaven-war-plugin构建
  2. 用于buildnumber-maven-plugin创建具有当前时间戳值的属性
  3. 使用wagon-maven-plugin生成的时间戳值将战争上传到登台服务器
  4. 用于sshexec-maven-plugin启动 shell 脚本,该脚本将使用所选版本的应用程序重新启动 tomcat
于 2012-07-23T17:10:33.477 回答