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/