在OneOS-Lite上学习搭建CI/CD流程(GitLab篇)

1.让GitLab CI/CD做什么

嵌入式软件开发领域高频使用的开发语言是C语言,在大型项目开发中,我们往往会有格式审查、编译审查的需求。如果能借助GitLab平台实现代码的格式和编译问题审查,将会极大提高合入代码的规范性,把控新代码对原有代码的影响,提高代码整体质量。

本文将手把手教学如何借助CI帮我们做代码格式审查、编译审查。

2.GitLab CI/CD快速搭建

2.1 VC Code设置

  1. VS Code设置为保存时自动格式化。

  1. 在代码根目录下放置.clang-format.clang-format-ignore文件。

.clang-format文件是代码格式化和格式检查的配置文件,可以从Clang-Format官方网页下载到模板再根据自己的需求调整,语法详见链接。编辑好了.clang-format这个文件,置于代码根目录,用VS Code编辑完代码后执行保存操作,保存的文件将自动按这个文件的格式规范来格式化代码。

.clang-format-ignore文件是用于配置在CI中忽略代码格式检查的文件或文件夹。

2.2 GitLab 配置

前提:你已经在GitLab有代码仓库,并且你是仓库的OwnerMaintainer身份。

如何让GitLab CI/CD为我们做代码格式的审查和编译审查呢,总结起来就五点:

  1. 仓库根目录配置.gitlab-ci.yml文件;
  2. 仓库中配置代码审查的脚本、clang-format格式审查工具和编译脚本;
  3. 配置一个用于编译的MDK工程;
  4. GitLab公共仓库配置一个Runner(一般是服务器);
  5. GitLab个人仓库配置一个Runner(一般是本机);
  6. Runner环境配置。

.gitlab-ci.yml可以理解为流水线文件,使用 YAML语法描述,.gitlab-ci.yml文件描述了你要做什么事情。本需求包括代码的拉取、代码格式审查和代码编译。把.gitlab-ci.yml放到远端分支的根目录,你每次pushMerge代码到Git远程仓库时,Runner都会自动触发CI pipeline,去执行.gitlab-ci.yml流水线文件中描述的事。

Runner很好理解,就是一个用来跑仓库代码的格式审查与编译审查的机器,一般公共仓库会是一台服务器,个人仓库会是本机。

3.具体配置流程

3.1 .gitlab-ci.yml文件

.gitlab-ci.yml如下:

文件描述了代码更新方式和两个Job。一个Jobcheck,做代码格式审查;另一个Jobbuild,做代码编译。script描述的是执行命令,即在Runner中执行的命令。tags描述的是Runner的标识,与Runner注册时的设置一致,用于在CI pipeline中顺利找到该主机。

代码格式审查的命令:python .workflow/ci/format_check/run-clang-format.py --clang-format-executable .workflow/ci/format_check/clang-format.exe -r components/ 。命令中调用了Python脚本和clang-format.exe执行文件,并指定了要检查的文件夹路径。

代码编译的命令:.workflow/ci/build/build_keil.bat,调用了指定路径下的编译脚本。

3.2 脚本及工具配置

在代码仓库.workflow > ci路径下的不同文件夹中放置格式审查的脚本、clang-format格式审查工具、编译脚本:

format_check文件夹放置run-clang-format.py格式审查脚本和clang-format.exe执行文件,clang-format.exe版本为12.0.1

build文件夹放置build_keil.bat编译脚本:

3.3 编译工程

在代码仓库 .workflow > ci > projects_compile路径下放置一个或多个用于编译的MDK工程,通过一个或多个工程的配置来铺盖所有代码。

3.4 公共仓库配置Runner

首先需要找到一台windows主机。

  1. 在系统中的某处创建一个文件夹,例如:F:\OneOS_Operate_System\GitLab-Runner

  2. 下载64 位32 位二进制文件并将其放入创建的文件夹中。重命名为gitlab-runner.exe(可选)。

  3. 注册Runner

    打开Windows PowerShell,进入F:\OneOS_Operate_System\GitLab-Runner路径运行./gitlab-runner.exe register命令:中间阶段需要输入URLTokenRunner的描述、Runner的标识、shell。其中Runner的标识需要与.gitlab-ci.yml文件中的tags描述的Runner的标识一致,否则无法找到指定的Runner

    其中的URLToken则是来自代码仓库的Runner设置中:

  4. 修改config.toml

    注册完Runner后,可以在F:\OneOS_Operate_System\GitLab-Runner文件夹下看到config.toml文件,打开并修改一处:shell = "pwsh"shell = "powershell"

  5. 启动Runner

    继续在Windows PowerShell中依次执行命令.\gitlab-runner.exe install.\gitlab-runner.exe start就可以启动Runner

    启动成功后可以看到Runner下多了一个设备,设备标识为win_ci,因此.gitlab-ci.yml文件中的tags也应该是win_ci

3.5 个人仓库配置Runner

个人仓库的Runner搭建在本机,配置方法基本等同于公共仓库的Runner配置方法,唯一差别是注册Runner时的URLToken需要从个人仓库的中获取。注册时输入的Runner标识与公共仓库的Runner标识保持一致。

3.6 Runner环境配置

要想让Runner成功的跑格式审查命令:python .workflow/ci/format_check/run-clang-format.py --clang-format-executable .workflow/ci/format_check/clang-format.exe -r components/ 和代码编译的命令:.workflow/ci/build/build_keil.bat还需要对Runner做一定的配置(服务器和本机都必须要):

  1. 安装python

  2. 安装MDK v5

  3. 添加系统环境变量(PythonMDK都要确保添加)

3.7 重启Runner

输入命令:./gitlab-runner.exe restart来重启Runner,首次服务器和本机都要执行此命令重启Runner。成功后就不用在执行此命令,主机即使重启也可以正常使用Runner不需要做其它。

3.8 触发

个人仓库的push或从个人仓库向公共仓库提Merge请求会触发流水线,会对整个代码仓库进行代码格式审查和编译,任何一项不通过将无法合入公共仓库。

4. 关注&&联系

gitee: https://gitee.com/cmcc-oneos/OneOS-Lite

docs: https://oneos-lite.com/

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在移植 Linux WiFi 代码到 OneOS 上,需要遵循以下步骤: 1. 收集所需的工具: 一台运行 Linux 的 PC 以及针对 OneOS 的交叉编译器 2. 收集需要移植的 WiFi 驱动源代码 3. 在 PC 上编译 WiFi 驱动并在运行正常的 Linux 系统上进行测试 4. 使用交叉编译器将 WiFi 驱动编译成 OneOS 的可执行代码 5. 将编译出的可执行代码上传到 OneOS 系统中 6. 在 OneOS 上运行 WiFi 驱动并测试其功能是否正常 这些步骤中的具体细节可能会因为不同的 WiFi 驱动或 OneOS 版本而有所不同, 请仔细阅读相关文档。 注意:由于移植的难度程度和系统的差异,移植 Linux WiFi 代码到 OneOS 上可能需要一定的 Linux 驱动开发经验和熟悉 OneOS 的知识。 ### 回答2: 将Linux的WiFi代码移植到OneOS上需要以下步骤: 1. 确定OneOS的硬件支持:首先,需要确定OneOS支持的硬件平台是否与Linux的WiFi模块兼容。查看OneOS的支持列表或者相关文档,确认所使用的硬件平台是否支持WiFi功能。 2. 确定WiFi模块的适配层:OneOS与Linux的内核不同,所以需要适配WiFi模块的代码和驱动程序。可以根据硬件平台的特性,选择合适的适配层,将WiFi模块的驱动程序和相关代码嵌入到OneOS的内核中。 3. 调整硬件接口和功能:OneOS的API和Linux的API可能存在差异,所以在移植过程中需要调整硬件接口和功能的相应代码。这包括初始化、配置和操作WiFi模块等。 4. 进行编译和调试:移植完WiFi代码后,进行编译和调试,确保代码的正确性和稳定性。使用OneOS提供的工具链进行编译,并在实际硬件平台上进行测试和调试。 5. 验证和优化:完成编译和调试后,需要验证WiFi模块的功能是否正常。进行功能测试,确保WiFi的连接和传输正常。如果遇到问题,可以进行优化和调整,以满足OneOS的要求和性能。 在移植过程中需要注意OneOS的内核架构和功能特性,与Linux有所不同。因此,需要仔细了解OneOS的文档和代码,确保正确移植WiFi功能。 ### 回答3: 将Linux的WiFi代码移植到OneOS上,需要经过一系列的步骤和适应性调整。 首先,需要将Linux的WiFi驱动代码从Linux内核源码中提取出来。可以通过查看Linux内核源码中的wifi驱动目录,将相关文件复制到OneOS的代码工程中。 然后,需要根据OneOS的内核结构和设备驱动框架,对从Linux中提取出来的WiFi驱动代码进行适当的修改和调整。在此过程中,可能需要根据OneOS的API和设备管理机制进行适配,以兼容OneOS的驱动架构和网络栈。 接下来,要根据OneOS的文件系统、内存管理和网络协议栈等子系统,对WiFi驱动进行相应的配置和参数设置。这包括将WiFi驱动与OneOS的网络协议栈集成,确保其与OneOS的网络接口、网络协议栈以及网络协议栈的配置相匹配。 然后,需要针对OneOS的硬件抽象层(HAL)进行适配。这可能涉及到对硬件抽象层代码的修改,以使WiFi驱动能够正确地与OneOS的硬件平台进行通信和交互。 最后,还需要进行一系列的编译、链接和调试工作,确保WiFi驱动在OneOS上能够正确地运行和提供相应的网络功能。 综上所述,将Linux的WiFi代码移植到OneOS上需要从Linux内核中提取并适应代码、对接OneOS的驱动架构和网络栈、与硬件抽象层进行适配,最终完成编译和调试工作。这个过程需要开发者对Linux和OneOS的内核、驱动架构和网络协议栈有一定的了解和经验,以确保驱动的正确性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值