请各位同学介绍一下贵厂PHP项目的部署方式。
感兴趣的点主要有这么几个
- 如何维护第三方源码?用什么方式保证依赖关系?是否有标准的依赖关系维护方式?
- 如何维护第三方lib?特别是C模块?
- 如何做PHP本身版本升级?升级的前期准备工作是怎样的?
回复内容:
我来回答第一个问题吧。PHP 的世界里有 Composer(
http://getcomposer.org/),这个玩意儿你可以联想成 npm 之于 Node.js,gem 之于 Ruby。它有一个官方的包仓库 Packagist(
https://packagist.org/)。
一般的项目部署也有相关的工具,例如 phing(
http://www.phing.info/),可以认为是 Ant 之于 Java。
举例来说,现在我做的项目用的是 Github Jenkins 的方案,每个开发人员从主仓库 fork 到自己账户,然后提交 Pull Request。Pull Request 会触发 Jenkins 的 Pull Testing,将改动部署到 QA 环境中,然后该怎么测试就怎么测试吧。部署脚本的工作主要包括清理原先的项目文件和数据库,取回代码库中最新的版本,跑 phing(包括数据库的 Migration、运行 PHPUnit, PHP CodeSniffer等一系列QA工具)等。最终部署到生产环境的过程是类似的。
团队刚开始的时候,公司给了几台机器,让我们开始干活了:(
一开始是开发完之后验收通过直接到服务器git pull,好吧,我也承认居然是我能做出这样的事情来。怎么能忍呢?这么low的事情我怎么做得出手呢?然后就开发了一个上线部署系统 Walle 瓦力 - web部署系统
,另外,已经有其它公司也部署使用了。git项目地址:meolu/walle-web · GitHub
,欢迎fork试用、star。
至少开发、测试、上线流程,详见技术团队代码管理和部署