【问题标题】:How should I create an automated deployment script?我应该如何创建自动部署脚本?
【发布时间】:2010-12-31 11:04:01
【问题描述】:

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

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

这些东西都比较简单。我敢肯定,有一百万种不同的方法可以做到这一点。我想听听一些选择。我的第一个想法是一个 Bash 脚本。一般来说,我对脚本编写的经验很少,但认为这是一个很好的学习方式。我也有兴趣使用 Ruby/Python 或类似的最新工具来做这件事,因为我对这些语言几乎没有经验。我认为作为一名年轻的开发人员,我绝对应该掌握某种脚本语言。我也可能对某种可以为我做这些事情的软件解决方案感兴趣,尽管我认为为了方便和可定制性而编写脚本是一种更好的方式(我可能只是编造了这个词)。

对于那些做到这一点的人的一些实际问题。你会推荐什么语言来自动化我上面列出的过程?这对我来说是一个学习 Bash/Ruby/Python/其他东西的好机会,还是我应该每周花 10 分钟手工完成 2-3 次?我认为这个问题的答案显然是否定的。我可以从我的计算机自动执行这些操作,还是需要设置脚本以在 Linux 服务器中运行?电子邮件是我可以自动化的,还是我自己做这部分更好?

在我这样做时几乎肯定会出现更多问题,提前感谢大家。

更新

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

【问题讨论】:

    标签: deployment automation


    【解决方案1】:

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

    编辑

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

    【讨论】:

    • 我研究了 CruiseControl。我会调查你提到的其他人,所以谢谢你。我愿意使用软件来做到这一点,但如果可能的话,我想避免它。我宁愿花时间学习脚本语言,也不愿花时间学习使用软件。如果我的部署程序变得更加复杂,我一定会花时间进一步研究您提到的工具。
    • Hudson 比 CruiseControl 更容易设置。由于这对您来说更多的是一种学习体验,而不是实际需要,因此我将在我的回答中添加一个额外的建议。
    • 那个编辑看起来很棒,这正是我感兴趣的。看起来现在我将开始使用 Hudson,以便可以完成一些实际工作。但是,当我有时间时,我肯定会记住这个“学习练习”。
    • CC 机器设置起来很麻烦。我强烈建议 Hudson 而不是 CC 作为学习练习。
    【解决方案2】:

    在我的经验中最常见的是ant,值得学习,都很简单,而且非常好用。

    您绝对应该将其自动化,并且您的目标应该是一步完成。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2015-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-08
        • 1970-01-01
        • 2013-09-24
        • 2018-08-18
        相关资源
        最近更新 更多