持续集成与持续部署
传统开发过程中的坑
- BUG总是在最后才发现
 - 越到项目后期,加班越严重
 - 交付无法保障
 - 变更频繁,导致效率低下
 无效的等待多,用户满足度低
理想状态
- 不用为开发测试环境不一致而苦恼
 - 不用麻烦运维人员帮忙调试环境
 - 不用手动进行测试,模拟环境中进行自测
 - 不用手动发布、部署,自动化实现发布部署
 - 不用管开发、测试环境,只用专注代码的开发
 
持续集成CI解决问题?
- 提高软件质量
 - 效率迭代
 - 便捷部署
 - 快速交付、便于管理
 
持续集成CI(continuous integration) 持续交付CD(continuous delivery) 持续部署CD(continuous deployment)
- CI 不断提交代码测试
 - CD 在CI的基础上,对代码进行构建,打包进行储存,发布交由人工完成
 - CD 在CD的基础上,对代码进行自动化发布部署,快速验证
 
持续集成组成要素
- 版本管理工具 github gitlab
 - 构建脚本工具
 - CI服务器
 
应用场景
- 打包平台
- 常见的大包,java应用(Gradle/Maven)、Nodejs前端应用(npm/yarn)
 - 移动端大包(Android/IOS)
 
 - 测试平台
- 接口测试
 - 自动化测试Robotium/TestLink
 - 单元测试junit
 - 性能测试 JmeTest
 
 - 自动部署 
- FTP
 - Shell
 - Tomcat/Docker
 
 - 持续集成
- Git: gitlab/github/gitee等
 - Jenkins/TravisCi/CircleCi
 - Docker
 
 
