简介
本文主要学习,为什么要用持续集成,什么是持续集成,持续集成解决了什么问题;在开源社区中几种常用的CI工具该如何使用?
为什么要使用持续集成?
CI可以带来很多好处,从代码校验的角度来看:
在本地进行校验,依赖 Git hook 功能,然而使用 Git hook校验存在被绕过的风险;本地校验的另一个问题是,协作时无法知道对方提交的代码是否符合规范,只有将代码下载到本地执行校验才可以获得校验结果。
Git 提交的时候会执行 hook 校验,如果添加参数--no-verify,则可以跳过 hook 校验。
如果能够在服务器上运行校验,就解决了Git hook校验可能被绕过的问题,社区中有很多在服务器上运行测试和校验的服务,社区提供的服务叫作持续集成服务。
持续集成CI是什么?
持续集成(Continuous Integration,CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能发生多次集成。每次集成都通过自动化的构建(包括编译、发布、自动化测试)来验证,从而尽早地发现集成错误。
工作流程:
- 开发人员在其本地计算机上检查代码
- 完成后 - 他们将代码变更提交到代码仓
- 代码仓向CI系统发送请求(webhook)
- CI服务器运行任务(测试,覆盖率,检查语法等)
- CI服务器发布已保存的工件( artifacts )以进行测试
- 如果构建或测试失败,CI服务器会向团队发出警报
- 该团队解决了这个问题
开源社区常用的CI工具
CI可以带来很多好处,目前,开源社区
常用的CI工具有3款,分别是GitHub Actions、CircleCI和Travis CI。
GitHub Actions
GitHub Actions 是 GitHub 官方提供的自动化服务,官网是这么介绍的:在 GitHub Actions 的仓库中自动化、自定义和执行软件开发工作流程。您可以发现、创建和共享操作以执行您喜欢的任何作业(包括CI/CD),并将操作合并到完全自定义的工作流程中。
GItHub Actions优点:
- 和 GitHub 集成更容易;
- 支持复用其他人的脚本片段;
-
登录github 进入项目
-
根据项目的性质,是npm包还是把项目发布到git? 然后选择对应的模板;也可以自定义自己的模板;
搜索或者选择一个
Node.js模板。该文件的默认内容:
也可以根据自己的需求修改该xml文件
上面操作的原理是在
.github/workflows目录下添加一个xxx.yml 文件, 当然该文件也可以自定义的。 后面再提交:使用 GitHub 提供的终端命令行工具: GitHub CLI 终端
Circle CI 和 Travis CI
CircleCI是一个基于云的系统 - 不需要专用服务器,您无需管理它。 但是,它还提供了一个本地解决方案,允许您在私有云或数据中心中运行它。
- CircleCI是一个基于云的系统 - 不需要专用服务器,您无需管理它。 但是,它还提供了一个本地解决方案,允许您在私有云或数据中心中运行它。
- 即使是商业帐户,它也有免费计划
- Rest API - 您可以访问项目,构建和工件(artifacts)。构建的结果将是工件或工件组。 工件可以是已编译的应用程序或可执行文件(例如,android APK)或元数据(例如,关于测试`成功的信息)
- CircleCI 缓存必要的安装(requirements installation)。 它会检查第三方依赖项,而不是持续安装所需的环境
- 您可以触发SSH模式访问容器并进行自己的调查(如果出现任何问题)
- 这是一个完整的开箱即用解决方案,需要最少的配置\调整
Gitee
Gitee Go 是 Gitee 推出的一款 CI/CD工具,提供持续集成,持续交付(部署)能力。不断提升应用交付的质量和效率。通过构建自动化、测试自动化、部署自动化、运维自动化,完成从代码提交到应用交付的自动化。当前 Gitee Go 提供免费尝鲜服务,开通后赠送 200 分钟体验时长;Gitee Go 为增值服务,计费方式为预付费,按构建时长购买。付费企业套餐资费不包含 Gitee Go 等增值服务,如需使用请单独购买。
如果使用的是 GitLab,则可以直接使用 GitLab 的构建工具;对于公司内部的项目,可以使用 Jenkins。
SonarLint的CI
webstorm中使用 sonarLint插件并配合 sonarQube 或 sonarCloud 您的团队可以共享公共语言规则集、项目分析设置等;这种组合形成了一个连续的分析解决方案,使代码质量和安全问题远离您的分支。
NodeJs >= 14.20 更推荐版本 >= 16。
sonarQube