DevOps与ci/cd简介
什么是DevOps
AWS对DevOps模式做了一个完整的定义:
简单来说,DevOps希望做到的是软件产品交付过程中IT工具链的打通,使得各个团队减少时间损耗,更加高效地协同工作。
DevOps发展阶段
DevOps的好处
最大的好处就是可以高效交付,这也正好是它的初衷。
对应用程序发布的影响
在很多企业中,应用程序发布是一项涉及多个团队、压力很大、风险很高的活动。然而在具备DevOps能力的组织中,应用程序发布的风险很低,原因如下:
- 减少变更范围
- 加强发布协调
- 自动化
应用发布流程
什么是CI/CD?
CI/CD包含两个独立而又互补的部分。
持续集成是指在应用代码的新组件集成到共享存储库之后自动测试和构建软件的流程。这样一来,就可以打造出始终处于工作状态的应用“版本”。持续集成流程中纳入了单元测试,因而可以验证软件的功能。这样可以提前识别错误,并避免反馈回路后期的周期浪费。
持续交付是指将CI流程中创建的应用交付到类似生产环境的过程,在该过程中将对应用进行额外的自动化测试,以确保应用在部署到生产环境以及交付到真实用户手中时能够发挥预期作用。这样还可以确保最新构建版本能够以预期方式与其他软件和应用交互。成功的CD意味着,无论是通过自动化还是手动,构建版本都随时可以部署到生产环境。
CI/CD的重要意义
- 基于业务要求按需部署软件
- 降低软件在生产环境中无法正常运行的风险
- 实现根据客户反馈进行快速迭代
- 加快发生故障时的恢复速度
环节
- 代码仓库,用于存储程序源文件的地方。如:GitLab,Github
- 构建,这是一个持续集成工具,用于编译、打包程序,运行单元测试 如:GitLab-ci,Jenkins
- 测试,提供有关业务风险反馈的连续测试工具。 如:JUnit
- 发布,快速上线部署,自动化发布。如:docker,k8s
- 监控与日志,应用监控、基础日志,帮助快速定位问题。如:ElasticStack,zipkin
在我们项目中的实际应用
在我们应用中的pipeline流程:
gitlab -> gitlab-ci -> docker repository -> rancher(k8s)