PHP自动化发布工具:Deployer

项目迭代的过程中, 不断把新开发的功能发布到不同的系统环境是一件家常便饭的工作. 传统的做法一般是: 登录到某台服务器上; 更新代码; 更新依赖(composer up); 重启一些服务(比如队列什么的)... 随着项目逐渐长大, 服务器的数量会越来越多, 每次发布新功能都需要亲自登录到20台服务器上, 一遍又一遍的做着重复的操作,还得确保每一次操作都正确且没有疏漏, 对于程序员来说, 这样的事情是不可想象的。重复的工作,就交给代码去完成吧! Deployer 是一款用PHP开发的自动化发布工具。又要发布新版本了? 你所要做的仅仅是在命令行中输入一行命令,执行预先写好的脚本,之后所有的工作deployer会帮你完成。甚至,你还可以把它和版本控制工具的Hook结合起来,例如,当master分支收到新的提交后,deployer自动从版本控制中拉去新的代码,并在指定服务器上完成后续的发布工作,自动化发布实现了! 如果你是一名PHP程序员那就太棒了, 因为deployer的部署脚本也是用PHP来写的。deployer的原理其实很简单,添加服务器配置,通过ssh方式以秘钥或者密码登录到远程服务器并执行脚本。服务器配置文件大概是这样: prod: host: domain.com user: www identity_file: ~ stage: production deploy_path:…

PHP持续集成实践: PHPCI

持续集成(Continuous Integration)作为一种成熟的软件开发实践已经被广大程序员所熟知,Github上大量的开源项目也都纷纷加上Travis-CI来为自己的项目保驾护航。相信很多程序员都有过这样的经历:在与团队协作开发项目时,大部分时间大家都在各自的分支编写不同功能模块的代码,直到下一版本发布前,大家才开始开始着手将自己负责的模块合并到主分支中,这时你往往会发现,要将代码合并到主分支中甚至已经不再是一件简单的事了。自己一段时间前写的代码已经变得有点陌生,合并代码过程中一些小改动也许会在不经意间破坏整个项目,面对突然出现的大量陌生代码(其他程序员提交分支),产品上线的deadline却已经近在咫尺,原本简单的工作现在成了整个团队噩梦。 以上只是一个假想的片段,但这样的场景却又是如此似曾相识,持续集成思想的诞生正是为了解决类似这样的问题。Martin Fowler告诉我,在敏捷的团队,我们是这样工作:在完成手头的工作(并确保新鲜的代码都有测试覆盖时),在本地执行并通过构建(至少是测试)。将主分支的代码合并到本地分支,再次执行构建确保一切OK。将代码提交到主分支版本库,等待CI系统从版本库中检出代码,并再次构建项目。此时你只需要泡一杯咖啡,静静等待CI完成构建,如果构建通过,则证明你提交的代码没有任何问题,至此,一次集成工作已经顺利完成。 持续集成鼓励程序员们在保证构建通过的前提下,尽可能频繁地将手头的代码集成到主分支中。将代码集成作为一项最普通的日常工作,好处显而易见,团队所有的dev都能在最快时间内获得项目最新的修改,而主分支项目随时都可以上线发布。生活变得不再艰难。 PHPCI是一款专门面向PHP项目开发的持续集成工具。尽管还算不上完美,部分插件还有一些小Bug,…