持续集成与持续部署
传统开发过程中的坑
- 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