简单的基于Java的部署工具

时间:2012-07-23 16:40:44

标签: java linux grails maven

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

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

应该是这样的:

$ deploytool staging deploy 
$ deploytool staging rollback

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

基本上它只是一个:

  1. 编译+测试+构建存档
  2. 在服务器上创建'date'目录(/.../application/version-%date%/
  3. 将WAR内容从本地机器
  4. 上载到此目录中
  5. 更新上一个(/.../application/current/ - > /.../application/version-%date%/
  6. 的符号链接
  7. 重启tomcat(sudo service tomcat7 restart
  8. 删除包含最旧版本的目录(仅保留最近5个版本或最近45天的版本)
  9. 如果出现问题 - 将符号链接更新到以前的版本(并重新启动tomcat)
  10. 我已经看过Puppet和JClouds,但看起来不同的是,更多关于群集配置,而不是部署。目前我正在将Ruby Capistrano用于一个项目,并将bash脚本用于另一个项目。 Capistrano很好,但需要安装rvm,ruby,gem等,它对非ruby团队来说效果不佳,并且需要为java项目进行大量自定义。

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

1 个答案:

答案 0 :(得分:2)

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