互联网产品永远都处在不断更迭的beta阶段。我们常常会在生产环境外,建立一套与生产环境共享数据的lab环境,以便验证一些即将用于真实世界的想法。问题是,每次提交改动后都需要手工运行部署脚本(前后大概花去30s左右时间),很不高效,每天运行那么几次,对惜时如金的程序员来说是种磨难。于是忙中偷闲的时候,就会想:有没有一种方法在代码提交后能够自动部署,身躯手工的麻烦?
当然是有的。Github的 Post receive hooks 就是用来干这个滴。作者花了小半天时间(对nodejs不熟啊),实现了一个很简单的自动部署方案,趁着记忆还未散去,将其记录在案,和大家分享交流。
这两天无意翻到几个月前的Evernote笔记,看到了当时对团队开发环境的一些想法。可惜后来种种,这一想法未能得到实践,只能将其完善后公诸于众,立此存照,日后有空可以一试。
考虑这套开发环境是因为我们遇到了这些问题:
当时正好看到一篇关于 vagrant 的文章,感觉这正是我想要的救命稻草。
有时候,写个小app,部署是件麻烦的事情 —— 你需要登录到服务器上,手工编辑nginx,supervisor等配置文件,然后重启相关的服务。这些配置都不在版本库中,所以也无法记录历史修订。puppet
是个不错的解决方案,但对于小项目来说,使用puppet是个负担。
本文讨论如何通过写个简单的 makefile
来达到自动化部署的目的。