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

Deployment 我应该如何创建自动部署脚本?,deployment,automation,Deployment,Automation,我需要创建一些方法来在Linux服务器上部署本地WAR文件。到目前为止,我一直在做的是以下过程: 使用WinSCP上传WAR 使用PuTTY将SSH导入服务器 移动/重命名/删除某些文件文件夹以准备战争爆发 爆发战争 发送电子邮件通知用户重新启动 停止Tomcat服务器 使用tail确保服务器正确停止 将符号链接更改为指向爆炸战争 启动Tomcat 使用tail确保服务器正确启动 发送电子邮件通知用户已完成重新启动 这些东西都相对简单。我相信有无数种不同的方法可以做到这一点。我想听听一些选择。我

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

  • 使用WinSCP上传WAR
  • 使用PuTTY将SSH导入服务器
  • 移动/重命名/删除某些文件文件夹以准备战争爆发
  • 爆发战争
  • 发送电子邮件通知用户重新启动
  • 停止Tomcat服务器
  • 使用
    tail
    确保服务器正确停止
  • 将符号链接更改为指向爆炸战争
  • 启动Tomcat
  • 使用
    tail
    确保服务器正确启动
  • 发送电子邮件通知用户已完成重新启动
  • 这些东西都相对简单。我相信有无数种不同的方法可以做到这一点。我想听听一些选择。我的第一个想法是Bash脚本。一般来说,我对脚本编写几乎没有经验,但我认为这是一个很好的学习方法。我也有兴趣用Ruby/Python或类似的东西来实现这一点,因为我对这些语言几乎没有经验。我认为作为一名年轻的开发人员,我绝对应该掌握某种脚本语言。我可能也对某种软件解决方案感兴趣,这种解决方案可以为我做这件事,尽管我认为为了方便和可定制性,脚本可能是一种更好的方式(我可能只是编造了这个词)

    对于那些走到这一步的人来说,有一些实际的问题。您建议使用什么语言来自动化我上面列出的过程?这对我来说是一个学习Bash/Ruby/Python/其他东西的好机会,还是我应该一周花10分钟手工做2-3次?我认为答案显然是否定的。我可以从我的计算机上自动化这些东西吗,或者我需要设置脚本在Linux服务器上运行吗?电子邮件是我可以自动处理的,还是我自己做这部分比较好

    更多的问题几乎肯定会出现,因为我这样做,所以感谢所有提前

    更新
    我应该提到,我正在使用Maven来构建战争。因此,如果我能与Maven一起完成所有这些,请让我知道

    对于您的需求来说,这可能太繁重了,但是您有没有看过构建自动化工具,例如or?您可能还想看看,它更轻量级,并且是用Ruby编写的(而不是像我提到的另外两个那样使用Java)。这些工具可以做任何你说你需要在你的问题加上方式,方式更多

    编辑


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

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


    您应该明确地将其自动化,并且您的目标应该是让它在一个步骤中实现。

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

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