简易定制化代码部署 |
发布: 2013-08-27 13:32 |
工作一直以开发为主,最近维护测试机, 在多台测试机的时候,需要把提交的代码以不同的方式部署到不同测试节点, 在这样一个不算复杂的需求推动下,总结并实现这么一种简易部署方式。 web工程师开发流程如下, 提交代码到svn,svn钩子把代码checkout到本机, 做为本机web测试环境的nginx服务代码。 在架构简单的情况下,一台测试机足够用的情况下运行良好。 不过,随着架构调整,组件变多,一台测试机无法安装所有的服务, 如除了nginx,php外,还需要安装gearman,redis等服务。 这时需要保证最新的代码也能同时部署到安装gearman测试机上。 另外,对于当前的web开发,还有一些特殊的需求,如做js/css客户端优化功能, 而对js/css需要使用squid做前端访问缓存,又出现一种服务流程,并部署在其他测试机上。 经过上面的需求分析,实现这么个简单的测试部署方式, svn提交+svn钩子+http通知+shell/php处理事件通知。 首先,提交代码模式不变, 在需求部署的测试机上安装nginx+php服务,作为通知服务执行, 在php中,配置当前机器需要处理的项目列表, 查找项目的部署脚本代码,执行部署过程。 代码目录结构: [root@test003 trunk]# tree ├── deploy.d │ ├── deploy.qtchina.net.sh │ ├── dojquery.qtchina.net.sh │ ├── functions.sh │ ├── gearman.qtchina.net.sh │ └── slae.qtchina.net.sh ├── deployd_impl.sh ├── deployd.php ├── r.js ├── squidclear.php ├── squidpurge │ └── SquidPurge.php └── squidpurge.php 代码的大概执行流程, svn 钩子 -> curl http://x.x.x.x/deployd.php -> deployd_impl.sh -> functions.sh -> xxx.qtchina.net.sh --> (r.js | squidpurge) -> response 代码的部署,要么是推送模式,要么是拉取模式,这里使用的是拉取模式。 也比较直接,安装方便,充分利用现有的服务。 通过代码归类的方式,比较好的解决了定制化部署不同项目的问题。 其他更成熟复杂的部署方式,像使用一些成熟稳定的运维工具nagois等当然也能很容易的实现, 只是再装那么多东西,不专业做运维,感觉会加大测试机的维护量。 |
原文: http://qtchina.tk/?q=node/760 |
Powered by zexport
|