一、定义与范围
CI/CD:CI(Continuous Integration,持续集成)和CD(Continuous Delivery,持续交付), CI/CD是持续集成和持续交付的简称,聚焦于软件开发的一部分流程,主要包括自动化的构建(通过工具自动完成代码的编译、打包等操作)、测试、部署等。
DevOps: Development(开发)和Operations(运维)的组合,它涵盖了软件开发周期的全过程,包括开发、测试、部署、监控等,强调开发和运维团队的紧密合作。
CI/CD可以视为DevOps的一个组成部分,关注代码从开发到生产的自动化流程。
对于一个运维人员来讲,掌握DevOps全生命周期是必要的
很多时候大家并不刻意区分两者之间的不同,我们也不必太较真
二、Devops全生命周期
计划---代码---构建---测试---发布---部署---运维---监控---反馈---计划。。。
(1)计划(Plan)
内容:需求分析、任务分配、项目规划等。
工具:Jira、Trello、Azure Boards 等。
目标:明确需求,合理分配任务,确保团队协作顺畅。
(2)构建(Build)
内容:开发人员根据需求编写代码,并将其提交到版本控制系统(如 Git)。
工具:GitLab、Bitbucket、SVN 等。
目标:高效协作,确保代码质量。
(3)持续集成(Continuous Integration, CI)
内容:开发人员频繁地将代码合并到主分支,并通过自动化工具进行编译、测试。
工具:Jenkins、GitLab CI/CD、Travis CI、CircleCI 等。
目标:快速发现并修复代码问题,确保代码的可用性。
(4)持续交付/部署(Continuous Delivery/Deployment, CD)
内容:通过自动化流程将代码部署到测试环境或生产环境。
工具:Jenkins、GitHub Actions、Kubernetes 等。
目标:减少人为错误,加速产品交付速度。
(5)运维(Operate)
内容:监控系统运行状态,确保高可用性和性能。
工具:Prometheus、ELK Stack、Grafana、Zabbix 等。
目标:快速响应故障,保障系统稳定运行。
(6)持续反馈(Continuous Feedback)
内容:收集用户反馈和系统运行数据,优化产品。
工具:SonarQube、Checkmarx 等。
目标:持续改进产品质量,提升用户体验。
DevOps 的工具链覆盖了整个软件生命周期,包括但不限于:
通过这些工具和实践,DevOps 能够实现从需求到交付的全流程自动化,提升开发效率和产品质量
三、CI/CD持续集成与持续交付
持续集成:
频繁地将代码集成到主干,每次提交后自动进行构建和测试,快速发现错误。
持续交付:
在持续集成的基础上,将代码部署到类生产环境中进行更多测试,确保随时可交付。
持续部署:
代码通过评审后自动部署到生产环境,前提是自动化测试和部署流程的完善