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
:
3.5 集体仓库配置 Runner
集体仓库的 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
-
增加零碎环境变量(
Python
和MDK
都要确保增加)
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/