在OneOS-Lite上学习搭建CI/CD流程(GitLab篇)
1.让GitLab CI/CD做什么
嵌入式软件开发领域高频使用的开发语言是C语言
,在大型项目开发中,我们往往会有格式审查、编译审查的需求。如果能借助GitLab
平台实现代码的格式和编译问题审查,将会极大提高合入代码的规范性,把控新代码对原有代码的影响,提高代码整体质量。
本文将手把手教学如何借助CI
帮我们做代码格式审查、编译审查。
2.GitLab CI/CD快速搭建
2.1 VC Code设置
- 将
VS Code
设置为保存时自动格式化。
文章图片
- 在代码根目录下放置
.clang-format
和.clang-format-ignore
文件。
文章图片
.clang-format
文件是代码格式化和格式检查的配置文件,可以从Clang-Format
官方网页下载到模板再根据自己的需求调整,语法详见链接。编辑好了.clang-format
这个文件,置于代码根目录,用VS Code
编辑完代码后执行保存操作,保存的文件将自动按这个文件的格式规范来格式化代码。.clang-format-ignore
文件是用于配置在CI
中忽略代码格式检查的文件或文件夹。2.2 GitLab 配置
前提:你已经在
GitLab
有代码仓库,并且你是仓库的Owner
或Maintainer
身份。如何让GitLab CI/CD为我们做代码格式的审查和编译审查呢,总结起来就五点:
- 仓库根目录配置
.gitlab-ci.yml
文件; - 仓库中配置代码审查的脚本、
clang-format
格式审查工具和编译脚本; - 配置一个用于编译的
MDK
工程; - 为
GitLab
公共仓库配置一个Runner
(一般是服务器); - 为
GitLab
个人仓库配置一个Runner
(一般是本机); Runner
环境配置。
.gitlab-ci.yml
可以理解为流水线文件,使用 YAML
语法描述,.gitlab-ci.yml
文件描述了你要做什么事情。本需求包括代码的拉取、代码格式审查和代码编译。把.gitlab-ci.yml
放到远端分支的根目录,你每次push
或Merge
代码到Git
远程仓库时,Runner
都会自动触发CI pipeline
,去执行.gitlab-ci.yml
流水线文件中描述的事。Runner
很好理解,就是一个用来跑仓库代码的格式审查与编译审查的机器,一般公共仓库会是一台服务器,个人仓库会是本机。3.具体配置流程 3.1
.gitlab-ci.yml
文件.gitlab-ci.yml
如下:文章图片
文件描述了代码更新方式和两个
Job
。一个Job
是check
,做代码格式审查;另一个Job
是build
,做代码编译。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
主机。- 在系统中的某处创建一个文件夹,例如:
F:\OneOS_Operate_System\GitLab-Runner
。 - 下载64 位或32 位二进制文件并将其放入创建的文件夹中。重命名为
gitlab-runner.exe
(可选)。 - 注册
Runner
打开Windows PowerShell
,进入F:\OneOS_Operate_System\GitLab-Runner
路径运行./gitlab-runner.exe register
命令:中间阶段需要输入URL
、Token
、Runner
的描述、Runner
的标识、shell
。其中Runner
的标识需要与.gitlab-ci.yml
文件中的tags
描述的Runner
的标识一致,否则无法找到指定的Runner
。
文章图片
其中的URL
和Token
则是来自代码仓库的Runner
设置中:
文章图片
- 修改
config.toml
注册完Runner
后,可以在F:\OneOS_Operate_System\GitLab-Runner
文件夹下看到config.toml
文件,打开并修改一处:shell = "pwsh"
为shell = "powershell"
- 启动
Runner
继续在Windows PowerShell
中依次执行命令.\gitlab-runner.exe install
和.\gitlab-runner.exe start
就可以启动Runner
:
文章图片
启动成功后可以看到Runner
下多了一个设备,设备标识为win_ci
,因此.gitlab-ci.yml
文件中的tags
也应该是win_ci
:
文章图片
个人仓库的
Runner
搭建在本机,配置方法基本等同于公共仓库的Runner
配置方法,唯一差别是注册Runner
时的URL
、Token
需要从个人仓库的中获取。注册时输入的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
做一定的配置(服务器和本机都必须要):- 安装
python
- 安装
MDK v5
- 【在OneOS-Lite上学习搭建CI/CD流程(GitLab篇)】添加系统环境变量(
Python
和MDK
都要确保添加)
文章图片
输入命令:
./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/
推荐阅读
- 你到家了吗
- Y房东的后半生14
- 闲杂“细雨”
- 杜月笙的口才
- 赢在人生六项精进二阶Day3复盘
- 祖母走了
- 陇上秋二|陇上秋二 罗敷媚
- 樱花雨
- 眼观耳听美食的日子
- MediaRecorder前后摄像头同时录像