1. 场景
持续部署:业界没有统一明确地定义,简单理解为将集成结果部署到不同的环境供用户使用,并且立即反馈部署结果的实践,其中不同的环境包括:开发环境、测试环境、预发布环境、生产环境
持续部署两个核心要素:持续、自动化,自动化是持续的基础
持续部署的需求场景:
- ·需要频繁的发布更新
- ·部署规模较大,人工操作费时费力易出错
- ·规范化上线部署流程和配置规范
- 注:此处只讨论应用部署,不包括系统部署
2. 实践
- ·开发提交代码到Git仓库
- ·自动或手动触发持续集成,执行编译、打包、单元测试、代码扫描等过程,并构建出可部署的程序文件,上传测试的SVN库
- ·测试人员手动触发Jenkins调用Rundeck从测试的SVN库中获取部署文件并部署到测试环境
- ·测试人员进行产品验证
- ·测试人员在验证通过后,申请发布到生产环境,并手动触发Jenkins,将测试的SVN库中的部署文件上传到运维的SVN库
- ·运维人员触发Rundeck,从运维的SVN库中获取部署文件并更新到生产环境
注:
- ·集群的部署采用分步更新,先发布到线上集群里的某一个节点进行更新测试,测试通过后把这个节点加入集群,再更新其他节点
- ·发布成果的版本采用时间戳的形式
3. 工具
3.1 工具箱
- ·Jenkins:用作发布任务的触发,实现发布的持续化
- ·SVN:发布成果的版本管理工具,实现发布内容的可追踪、易回滚
- ·Rundeck:用Java/Grails实现的开源自动化部署工具,帮助用户在数据中心或者云环境中自动化各种操作和流程。通过命令行或者web界面,用户可以对任意数量的服务器进行远程操作,大大降低了对服务器自动化的门槛。
4. 效果
- ·提升应用变更效率,包括速率和成功率
- ·实现部署自助化,开发、测试均可完成相应环境的发布
原文出自:
http://udn.yyuap.com/forum.php?mod=viewthread&tid=30567&typeid=343