终极嵌入式固件 DevOps 基础设施
了解如何设置固件工作流程,以实现高质量的产品开发和团队效率。
讲师:Martin Schröder
双语IT资源独家Udemy付费课程,独家中英文字幕,配套资料齐全!
用不到1/10的价格,即可享受同样的高品质课程,且可以完全拥有,随时随地都可以任意观看和分享。
您将学到什么
- 如何为 GitLab 正确配置你的 Gitlab 仓库
- 如何设置适用于嵌入式固件开发的 CI 流程
- 如何在 CI 上组织文件并检查目录结构的完整性
- 如何从您的来源、配置选项和硬件描述生成漂亮的文档
- 如何使用 CMock 将单元测试和集成测试添加到嵌入式项目
- 如何添加模拟支持以根据用户要求对嵌入式固件进行系统测试并在 CI 上运行这些固件
探索相关主题
- DevOps
- 软件开发工具
- 发展
要求
- 对 git 和 C 编程有基本的了解
- 对 Python 有基本了解
- 希望了解正确的 CI 设置
描述
本次培训可帮助您实现固件的持续交付流程。
从某种程度上来说,它也是一份全面的《Zephyr RTOS入门指南》。
这与 Zephyr 提供的现有入门指南有何不同?它针对的是您在 Zephyr 之外的自定义存储库中开发自定义固件应用程序 – 而 Zephyr 指南则侧重于开始在 Zephyr 上工作 – 这不是您每天都在做的事情。因此,本指南的重点有很大不同。
包含的内容
培训分为6个部分:
-
概述– 课程的快速概览 – 类似于此页面。
-
设置存储库– 这里我们从头开始,我向您展示如何正确配置存储库。
-
设置 GitLab CI – 在这里我们为固件存储库创建一个基本的 CI 管道,让我们能够自动运行整个构建过程。
-
目录结构– 我们创建一个全面的目录结构,可以容纳我们以后可能添加到项目中的所有内容。
-
文档生成– 在这里我们添加一个文档生成器表格 Zephyr,它将为我们的项目生成美观的参考手册。
-
测试基础设施– 我们在这里使用 renode 和 CMock 构建自动化测试基础设施。
-
发布生成– 在这里我们生成一个包含所有文件的版本 – 文档、软件物料清单和固件。
设置存储库
在本节中,我们从头开始设置一个基本存储库。从头开始这样做的好处是您可以了解整个存储库的设置方式。虽然我们遵循与 Zephyr 类似的设置,但我们不会从已设置的存储库开始。相反,我们从零开始。
本节涵盖以下主题:
-
添加第一个机器人框架脚本,作为此步骤的“完成的定义”。
-
添加所需的文件:CMake 文件、Kconfig 文件、CODEOWNERS、gitignore 等。
-
添加一个预提交挂钩,它将在每次提交之前对已更改的文件进行检查。
-
添加一个存储库初始化脚本,该脚本将在检出后设置本地存储库和系统。
设置 GitLab CI
设置好存储库后,我们现在需要配置 gitlab,以便可以处理合并请求。为此,我们执行以下操作:
-
通过 .gitlab-ci.yml 配置 CI 管道
-
创建合适的任务模板(用于在 gitlab 中创建任务)
-
构建 docker 镜像,以便我们可以通过 gitlab-runner 在本地运行管道。
-
添加合并请求模板
-
为基于主干的开发配置存储库。
-
添加检查以确保合并请求标题包含正在解决的票证的可点击参考。
-
添加 zephyr 合规性检查脚本 – 以便您可以在合并之前验证合并请求的内容。
目录结构
一旦我们让 gitlab 管道正常工作,我们现在就可以通过合并请求进行工作,并且在此步骤中我们添加目录结构的其余部分。
其中包括:
-
添加示例应用程序 – 这样您就有了一个可以使用的模板。
-
添加定制板 – 以便我们可以为定制硬件构建应用程序。
-
添加 cmake 库目录 – 这将是我们稍后放置 cmake 帮助脚本的地方。
-
添加示例设备驱动程序 – 这样我们就有设备驱动程序目录的模板。
-
添加文档文件夹 – 我们稍后将向其中添加文档。
-
添加全局包含目录 – 用于整个固件项目中可见的库和驱动程序的公共接口。
-
添加示例库 – 这样我们就有办法添加在多个应用程序之间共享的库。
-
添加示例样本 – 以便我们稍后可以在 renode 中启动它们来运行用户故事。
文档生成
一旦完整的目录结构就位,就该添加文档生成了。在此模块中,我们采用 Zephyr 文档生成器,以便它在外部存储库中工作 – 例如我们存放固件代码的存储库。
这涉及:
-
移动文档生成器并采用脚本,以便它们为我们的项目构建文档。
-
添加用于验证章节结构的机器人框架脚本 – 以便我们可以确保文档遵循大致相同的结构。
-
将文档链接在一起,以便我们可以生成单个 PDF 或 HTML 输出。
-
将文档构建过程添加到 CI 并使所有内容通过我们之前设置的所有 CI 检查。
测试基础设施
在本节中,我们将重点介绍测试。我们需要添加三种主要类型的测试 – 单元测试、集成测试和系统测试。Zephyr 仅支持集成测试,对单元测试的支持有限 – 因此我们必须添加它。系统测试旨在采用最终固件,在模拟器中运行它(我们将在本次培训中使用 renode)并针对它运行用户场景 – 这可以验证整个系统的完整性。
-
添加统一性 – 这样我们就可以抛弃 ZTest 并使用标准化测试框架。
-
添加 CMock – 以便我们可以在单元测试中模拟任何函数并能够验证代码的逻辑完整性。
-
添加 renode 支持 – 以便我们可以通过 renode 模拟我们的固件并以机器人框架语法编写场景。
-
代码覆盖率检查 – 因此我们不允许合并任何源文件,除非它已经经过全面测试。
发布生成
在本节中,我们将利用迄今为止添加的所有内容并构建最终版本。这包括:
-
添加软件 BoM 生成 – 以便我们可以获得二进制文件中包含的文件列表。
-
添加代码以生成最终发布档案。
本课程适合哪些人:
- 嵌入式固件工程师
- 嵌入式软件专业人员
- 嵌入式项目团队负责人及经理
- 固件开发人员
如果你有能力,请务必支持课程的原创作者,这是他们应得的报酬!
本站收取的费用,仅用来维持网站正常运行的必要支出,从本站下载任何内容,说明你已经知晓并同意此条款。