共计 2302 个字符,预计需要花费 6 分钟才能阅读完成。
✨程序猿思维:能用工具解决的事绝不能入手!!!
1. 什么是 CI/CD?
- CI (Continuous Integration):继续集成
继续集成 是指程序开发者将代码块推送到 Git 近程仓库时,每次 Push 或 Merge 都将触发并运行一系列脚本来构建、测试和验证提交的代码,验证通过后合并到仓库分支中。
- CD (Continuous Deployment) :继续部署
继续部署 是继续集成的下一步动作,即通过 CI 形式胜利将代码合入指定仓库后,再将应用程序部署到生产环境的一系列动作。
CI/CD 形式 能够在开发阶段更及时的发现问题,升高代码审核人员的工作量,并进步代码品质,从而确保部署到生产环境的所有代码都合乎为应用程序建设的代码规范。CI/CD 最大的劣势就在于主动执行脚本,从开发到部署简直不须要人为干涉。
CI/CD在国外大型开源我的项目中使用广泛,多人开发、单人开发、非开源我的项目一样能够很好的使用 CI/CD 能力。此外,CI/CD 还能够灵便搭建,播种意想不到的便利性,帮忙程序员从反复而繁冗的工作中解放出来,更何况程序猿总喜爱说
2. CI/CD 原理与流程
CI/CD 继续集成的工具有 Circle CI、Travis CI、Jenkins、Gitee Go、GitLab CI/CD 等。当 CI/CD 与代码托管工具齐全集成时会带来微小的便利性,如 GitLab CI/CD、Gitee Go,能够将代码的提交、审查与主动合入联合在一起,借助工具来把控开发代码的品质,并且排除人为干涉的误差性。
CI/CD 的原理:
各大 CI/CD 工具的工作原理根本大同小异,以 GitLab CI/CD 为例。
GitLab CI/CD 是怎么工作起来的呢?总结起来就两点:
- 将
.gitlab-ci.yml
文件增加到近程仓库的根目录; - 为 GitLab 我的项目仓库配置一个 Runner。
说人话 ,.gitlab-ci.yml
能够了解为流水线文件,应用 YAML 语法形容,.gitlab-ci.yml
文件形容了你要做什么事件,在此文件中指定构建、测试和部署的脚本。把 .gitlab-ci.yml
放到远端分支的根目录,你每次 push 或 Merge 代码到 Git 近程仓库时,Runner 都会主动触发 CI pipeline,去执行 .gitlab-ci.yml
流水线文件中形容的事。
Runner 很好了解,就是一个用来跑仓库代码的构建、测试和部署的机器,能够是本地 PC,也能够是一台服务器。Runner 怎么配置、装置、注册,依据 GitLab 的阐明循序渐进就能够啦。
CI/CD 的流程:
一旦你将提交推送到近程仓库的分支上,那么你为该我的项目设置的 CI/CD 管道将会被触发。GitLab CI/CD 是这样做:
运行自动化脚本(串行或并行)代码 Review 并取得批准
- 构建并测试你的利用
- 就像在你本机中看到的那样,应用 Review Apps 预览每个合并申请的更改
- 代码 Review 并取得批准
- 合并 feature 分支到默认分支,同时主动将此次更改部署到生产环境
- 如果呈现问题,能够轻松回滚
通过 GitLab UI 所有的步骤都是可视化的
3.CI/CD 集成计划
抉择什么 CI 零碎?这取决于你的需要以及打算应用它的形式。
CircleCI 倡议用于小型我的项目,其次要指标是尽快开始集成。
当你从事开源我的项目时,倡议应用 Travis CI,这些我的项目应在不同环境中进行测试。
Jenkins 被举荐用于大型项目,在这些我的项目中,你须要进行大量自定义,这些自定义能够通过应用各种插件来实现,你能够在这里更改简直所有内容,但此过程可能须要一段时间。
Gitee Go 是 Gitee 外部集成的 CI/CD 工具,目前反对 Maven、Gradle、npm、Python、Ant、PHP、Golang 等工具和语言的继续构建与集成能力。Gitee Go 是属于 Gitee 的增值服务,须要你破费一笔小的费用。
GitLab CI/CD 是 GitLab 外部集成的 CI/CD 工具,收费且高度集成是其最大特色。
这里列出了局部集成计划:
VS Code + GitLab + GitLab CI/CD + ECS:
VS Code + Gitee + Jenkins + ECS:
VS Code + Gitee + Gitee Go + ECS:
VS Code + Gitee + 百度效率云:
4.OneOS CI/CD 能力
OneOS 是 C 语言为主的开源我的项目,较为非凡的一点是并不波及应用程序的部署流程。目前 OneOS 开源我的项目曾经具备 CI/CD 能力,给我的项目的标准开发与继续推动带来了很大便利性。具体解决的问题与解决形式列出来供大家我的项目集成 CI/CD 时参考。
解决的问题与解决形式:
代码标准、代码格局的对立
依靠 Gitee Go,增加云主机、配置流水线工作。在开发者奉献代码提 PR 时,会主动触发流水线,进行代码标准与格局查看,会将不符合规范的中央列举进去,供批改参考。当然,咱们给开发者提供了代码开发过程中保留时立刻格式化代码的工具,因而并不额定减少开发者的工作量。
代码的编译问题
依靠 Gitee Go,增加云主机、配置流水线工作。在开发者奉献代码提 PR 时,会主动触发流水线,进行代码的全量编译,若存在修复或新增代码带来的编译问题,可能及时发现并做出批改,保障代码仓库的提交品质。
冒烟测试
依靠 Gitee Go 和 Jenkins。新合入代码时会对原有代码按功能模块进行冒烟用例测试,及时发现新增代码对原有代码性能的影响,保障代码的稳定性。
说了这么多,总之一句话,能用工具实现的活,相对不能入手!鼓掌!
关注 && 分割
gitee:https://gitee.com/cmcc-oneos/OneOS-Lite
docs:https://oneos-lite.com/