Daily
更新: 5/8/2025 字数: 0 字 时长: 0 分钟
Daily Plan
#todo
- [ ]
Daily Study
Github Actions的学习
参照:https://go.lightnode.com/zh/tech/what-is-ci-cd
持续集成(CI)
概念:频繁的(一天多次)将代码集成到主干上
有两个好处: (1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。 (2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
核心措施:代码集成到主干之前,必须通过自动化测试。
持续交付(CD)
概念:频繁的将软件的最新版本交付给质量团队或者用户,以供评审。评审通过就进入生产阶段。作为持续集成的下一步,强调不管怎么更新,软件是随时可以交付的。
持续部署
概念:作为持续交付的下一步,代码通过评审后,自动部署到生产环境。强调软件随时都是可部署的。比持续交付多用一个自动化部署的步骤。
持续交付和持续部署的区别:采用持续交付时,系统会构建并测试每一个代码变更,然后将其推送到非生产测试环境或临时环境中。生产部署前可能存在多个并行测试阶段。持续交付与持续部署之间的区别在于,需要手动批准才能更新到生产环境。对于持续部署,生产会在没有明确批准的情况下自动发生。 持续部署是在持续交付的基础上更加自动化(体现在代码变更是否能自动提交生产环境),它俩都是 CD,或者说持续交付是 CD 的基础版,持续部署是完整版。
CI/CD管道
由多个阶段组成,一般包括:
- 代码提交:开发者将代码更改提交到版本控制系统(例如 Git)。这是管道的起点。
- 构建:提交的代码会自动构建成可执行的工件(例如二进制文件、Docker 镜像或应用程序包)。
- 自动化测试:运行自动化测试(单元测试、集成测试和其他类型的测试),以确保代码的质量并检查错误或回归。
- 暂存部署:如果代码通过测试,则将其部署到一个与生产环境非常相似的暂存环境。这使团队能够在接近生产的环境中验证更改,然后再上线。
- 批准/生产部署:一旦代码在暂存环境中得到验证,可能需要手动批准(在持续交付的情况下)或自动部署到生产环境(在持续部署的情况下) 好处:
- 更快的发布:自动化整个构建和部署过程加快了将新功能和错误修复推向生产的时间。
- 更高的质量:自动化测试确保只有稳定、无错误的代码被部署,从而减少生产环境中的错误或问题的风险。
- 减少停机时间:通过自动化部署和测试阶段,团队可以及早识别问题,避免在部署期间出现意外停机。
- 更容易的回滚:如果生产中出现问题,良好的 CI/CD 管道通常包括快速回滚到稳定版本的机制,最大限度地减少对用户的影响。
DevOps学习
理念:贯穿整个开发周期的开发和运维综合协作的工作方式 Devops的介绍:什么是 DevOps?看这一篇就够了! - 玩转DevOps和研发效能 - 博客园,链接中提到了三家大公司中对Devops的介绍。
概念
理念:贯穿整个开发周期的开发和运维综合协作的工作方式
Devops = 工具 + 实践 +文化,整个过程分为如下几步,是一个不断持续的过程
- 计划(Plan)
- 构建(Build)
- 持续集成(Continuous Integration)
- 部署(Deploy)
- 运维(Operate)
- 持续反馈(Continuous Feedback)
实践
参考链接:DevOps概念及搭建全过程(Jenkins、Harbor、SonarQube、K8s)-CSDN博客
主流和常见的工具:
- Code阶段(编码):Git+GitLab
- Build阶段(构建):Maven或Gradle
- Operate(运行):Docker
- Integrate(集成):Jenkins
- CI/CD(持续集成):操作Jenkins,编写对应脚本文件
- Code review(代码质量检测):Jenkins集成Sonar Qube
- 自定义镜像:Harbor
- Jenkins流水线操作
- WebHook:通知操作,如:钉钉机器人通知
- K8S编排:更加方便我们管理容器