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

时间:2009-12-31 16:42:48

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

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

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

    更新

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

3 个答案:

答案 0 :(得分:6)

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

修改

由于您希望这更像是脚本语言中的学习练习,而不是实际解决方案,因此这里有一个想法。您不必每次都手动上传WAR到服务器,而是在服务器上设置Mercurial存储库并创建一个钩子(请参阅herehere,尤其是here)每次从远程计算机(即本地工作站)推送变更集时执行Ruby(或ant或maven)脚本。您可以编写脚本,以便它执行上面列表中的所有操作项。这样,您将学习三个新东西:分布式版本控制范例,如何自定义所述工具,以及如何编写Ruby脚本以与您的操作系统进行交互(因为您的操作非常庞大)。

答案 1 :(得分:2)

我的经验中最常见的是蚂蚁,它值得学习,它非常简单,而且非常有用。

你应该明确地将其自动化,并且你应该在一步中实现它。

答案 2 :(得分:0)

您使用什么来构建WAR文件?使用相同的工具进行构建和部署有一些优势。在几个项目中,我使用Ant来构建Java项目并将其部署到服务器。