我应该如何创建自动部署脚本?

UmY*_*eah 8 deployment automation

我需要创建一些方法来获取在Linux服务器上部署的本地WAR文件.到目前为止我一直在做的是以下过程:

  1. 使用WinSCP上传WAR.
  2. 使用PuTTY SSH到服务器.
  3. 移动/重命名/删除某些文件文件夹以准备WAR爆炸.
  4. 爆炸战争.
  5. 发送电子邮件通知用户重启.
  6. 停止Tomcat服务器.
  7. 用于tail确保服务器正确停止.
  8. 更改符号链接以指向爆炸的WAR.
  9. 启动Tomcat.
  10. 用于tail确保服务器正确启动.
  11. 发送电子邮件通知用户已完成重启.

这些东西都相对简单.而且我确信有一百万种不同的方法可以做到这一点.我想听听一些选择.我的第一个想法是Bash脚本.我对脚本编写的经验很少,但认为这是一种很好的学习方法.我也有兴趣用Ruby/Python或类似这样的东西来做这件事,因为我几乎没有这些语言的经验.我认为作为一个年轻的开发人员,我绝对应该得到某种脚本语言.我可能也对某些可以为我做这些事情的软件解决方案感兴趣,虽然我认为脚本编写是一种更好的方式,为了简单和可定制性(我可能刚刚提出这个词).

对于那些使其成为现实的人的一些实际问题.您建议使用哪种语言来自动执行上面列出的流程?这对我来说是一个学习Bash/Ruby/Python /其他东西的好机会,还是我应该花10分钟的时间每周手工操作2-3次?我认为答案显然不是.我可以从计算机中自动执行这些操作,还是需要设置脚本以在Linux服务器中运行?电子邮件是我可以自动化的,还是我最好自己做这个部分?

我会这样做几乎肯定会出现更多的问题,所以提前做好准备.

UPDATE

我应该提一下,我正在使用Maven来构建WAR.所以如果我能用Maven完成所有这些,请告诉我.

Mar*_*c W 6

这对您的需求来说可能过于繁重,但您是否看过CruiseControl或Hudson等构建自动化工具?您可能还想查看Integrity,它更轻量级并且使用Ruby编写(而不是像我提到的其他两个那样使用Java).这些工具可以完成您在问题中所需的所有内容以及更多方式.

编辑

既然你希望这更像是脚本语言的学习练习,而不是实际的解决方案,那么这就是你的想法.不用手动上传每次你的服务器你的战争,建立一个水银服务器上的存储库,并创建一个钩子(见这里,这里,尤其是这里的每个时间)执行一个Ruby(或蚂蚁或Maven)脚本变更从远程计算机(即您的本地工作站)推送.您可以编写脚本,以便它执行上面列表中的所有操作项.这样,您将学习三个新东西:分布式版本控制范例,如何自定义所述工具,以及如何编写Ruby脚本以与您的操作系统进行交互(因为您的操作非常庞大).