Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

CI/CD的概念

CI/CD是持续集成(Continuous Integration)和持续交付(Continuous Delivery)的缩写,它旨在通过自动化的流程和工具,提高软件开发的效率、质量和交付速度。

持续集成

在现在的开发模式中,一般的项目,协同开发是离不开的,这就涉及到多个开发人员编写处理自己负责的功能模块或者某些开发人员共同负责一个模块。于是,通过版本控制系统可以将各个开发人员的代码集成在该共享存储库里,在存储库里,每个开发人员根据需求的不同来创建对应的分支,在完成需求后,每个人都需要提交合并将开发分支代码集成在一起,这就需要解决代码冲突,并且如何除了code review之外如何确保这些更改对应用没有产生影响,一旦提交请求合并到主分支,自动化构建工具就会根据流程自动编译构建安装应用,并执行单元测试框架的自动化测试来校验提交的修改。
以下是一些用于构建有效CI流程的关键组件:
版本控制系统(Version Control System,VCS):
例如Git,用于跟踪代码变更,协作开发,并确保团队成员之间的代码同步。
自动化构建工具:
如Jenkins、Travis CI、CircleCI等,用于在每次代码提交时自动触发构建过程。
单元测试框架:
例如JUnit(Java)、pytest(Python),用于确保代码的基本功能在集成后仍然有效。

持续交付

持续交付后的代码已经在主分支上了,这处于某个版本的待发布的状态,随时可以将开发环境的功能部署到生产环境中(部署到生成环境前还需要在测试环境性能测试、回归测试、自动化测试、人工测试等),运行脚本构建打包应用,通过自动化部署工具部署到生产环境运行应用,监控生产环境指标,如出现问题和错误,可以触发手动或自动回滚,如系统正常,则定期回顾,收集反馈,优化,并持续改进。
以下是一些用于实现持续交付的关键组件:
自动化部署工具:
例如Docker、Ansible、Kubernetes等,用于自动化地部署应用程序和其依赖。
环境配置管理:
工具如Terraform,确保不同环境(开发、测试、生产)的一致性。
持续监控和反馈:
使用工具如Prometheus、Grafana,确保在部署后能够监控应用程序的性能和稳定性。

本人目前负责的项目就是使用了Jenkins自动化构筑+K8S自动化部署

Jenkins+K8S实现自动化部署的全流程

提交项目代码并打上git tag,上传代码及tag至gitlab
gitlab通过webhook自动触发jenkins执行任务
jenkins获取代码,执行代码编译、构建docker镜像、上传docker镜像至harbor镜像仓库、执行kubectl命令部署至k8s

评论