关于CI技术分享
1.介绍GitLab CI:
GitLab CI(Continuous Integration)是 GitLab 提供的集成持续集成和持续交付(CI/CD)功能的一部分。它允许开发团队自动化构建、测试和部署他们的代码,以便更快地交付高质量的软件。通过 GitLab CI,你可以在 GitLab 仓库中配置一个 .gitlab-ci.yml 文件,其中定义了构建、测试和部署的各个阶段和步骤。当你的代码提交到 GitLab 仓库时,GitLab CI 会自动执行你定义的流程,并提供实时的构建和测试结果。
一些 GitLab CI 的主要功能包括:
⦁ 自动构建和测试:当代码发生变更时,GitLab CI 可以自动执行构建和测试任务,确保新的代码不会引入错误。
⦁ 并行和分布式处理:GitLab CI 允许你同时在多个运行器上运行测试和构建任务,加速整个流程。
⦁ 容器化支持:GitLab CI 支持使用容器来构建和运行代码,提供更一致的开发和测试环境。
⦁ 持续交付和部署:你可以配置 GitLab CI 来自动将测试通过的代码部署到生产环境,实现持续交付和持续部署。
⦁ 自定义流程:通过 .gitlab-ci.yml 文件,你可以定义自己的构建和测试流程,以适应你的项目需求
为什么使用GitLab CI:
自动化构建和测试:GitLab CI 允许你在代码提交后自动执行构建和测试任务。这有助于及早发现和解决代码错误,确保代码的稳定性和质量。
⦁ 快速反馈:自动构建和测试意味着开发人员可以更快地获得关于他们提交的代码质量的反馈。这有助于防止问题在代码库中累积,提高了开发效率。
⦁ 持续集成:通过持续集成,团队可以频繁地集成代码,减少分支间的差异,避免“集成地狱”。这有助于减少代码冲突和解决集成问题的时间。
⦁ 自动化部署:GitLab CI 不仅限于构建和测试,还可以自动部署代码到不同环境,如开发、测试和生产环境。这样可以实现持续交付和持续部署,减少人工干预。
⦁ 一致的构建环境:GitLab CI 支持容器化,确保构建和测试在一致的环境中运行。这可以避免因为开发和测试环境的差异导致的问题。
⦁ 跨平台支持:GitLab CI 可以用于各种不同的项目和编程语言,支持跨平台开发和部署。基本概念和术语:
Runner(执行者):Runner是一个在项目中运行CI/CD作业的实体。它可以是物理服务器、虚拟机、容器等。Runner负责接收来自GitLab的作业请求,并在其上运行这些作业的脚本。有两种类型的Runner:共享Runner(Shared Runner)是由GitLab托管的,可供所有项目使用;特定项目的Runner(Specific Runner)则专门为特定项目配置和使用。
⦁ Job(作业):Job是CI/CD工作的最小单元。它是在Runner上执行的一个命令序列,通常是编译、测试、构建或部署等任务。在一个CI/CD流程中,可以定义多个作业,每个作业都有一个唯一的名称,以及一个要运行的脚本或命令。
⦁ Pipeline(流水线):Pipeline是一组有序的作业,按照定义的顺序依次执行。每当您推送代码或发生其他触发条件时,GitLab会创建一个新的流水线。流水线可以包含一个或多个阶段(Stage),用于将作业分组,以便您可以在流水线的不同阶段执行不同类型的任务。
⦁ Stage(阶段):阶段是流水线中的一个逻辑分组,用于将相关作业组合在一起。一个流水线可以包含多个阶段,每个阶段可以包含一个或多个作业。通常,阶段用于将具有相似目标的作业分组,例如构建、测试、部署等。
Stage包含一下三个关键字:
⦁ Build(构建):构建阶段涉及将源代码转换为可执行的应用程序、库或软件包。在这个阶段,通常会执行编译、打包、生成可执行文件等操作,以创建软件的基本构建版本。构建后的产物可以是编译后的代码、二进制文件、库等。构建阶段的目标是确保代码能够成功编译,并且构建过程是可重复的。
⦁ Test(测试):测试阶段用于验证构建的软件在不同方面的正确性和稳定性。这包括单元测试、集成测试、端到端测试等。测试的目标是捕获和纠正代码中的错误、漏洞和问题,确保软件在各种情况下都能按预期工作。测试阶段是保障软件质量的关键一步,它帮助开发者及早发现并修复潜在的问题。
⦁ Deploy(部署):部署阶段涉及将经过测试和验证的软件发布到目标环境中,使其对用户可用。这可能包括将应用程序部署到服务器、云平台、移动设备等。部署通常还涉及配置服务器、设置环境变量、安装依赖项等任务,以确保应用程序能够正确运行。部署阶段的目标是将经过验证的软件交付给最终用户,以实现持续交付和持续部署的目标。
下图是目前runtime_version_seperate分支上的gitlab-ci.yml文件的部分内容,这部分内容主要是做ut覆盖率的检查。可以通过下面的例子看出一个完整的job是如何组织的;
学习更多参考官方文档:
gitlab-ci-yaml.md (fennay.github.io)
GitLab Pages | GitLab