本文分享自中移OneOS微信公众号:《CI/CD搭建流程-Gitee篇》,作者: Kisann。
Gitee,即码云,是OSCHINA.NET推出的代码托管平台,已有超过600 万的开发者选择Gitee。Gitee Go是Gitee推出的CI/CD(持续构建与集成)服务,类似GitLab CI/CD,用户可以通过自定义构建流程,实现构建集成自动化。Gitee Go目前已支持Maven、Gradle、npm、Python、Ant、PHP、Golang 等工具和语言的持续构建与集成能力。Gitee Go也支持脚本模式,即流水线文件中描述执行脚本,定义任何想做的事情,比如代码格式审查等。由于目前只支持添加Linux主机,因此脚本语言选择shell。
嵌入式软件开发领域高频使用的开发语言是C语言,在大型项目中,我们往往会有格式审查、编译审查、冒烟测试等需求。如果能在代码托管平台进行格式规范审查和编译问题审查,将会大幅提高合入代码的规范性,把控新代码对原有代码的影响,提高代码整体质量。
本文将手把手教学如何让Gitee Go帮我们做代码格式审查、程序编译和冒烟测试。
集成方案
• VS Code用于本地格式化代码
– VS Code设置为文件保存时格式化
– 需要在根目录放置.clang-format文件,这是代码格式化的配置文件
• Gitee托管代码,提供push、pull request、WebHooks机制
– push、pull request可以触发流水线进行代码的格式与编译检查
– WebHooks可以触发Jenkins进行冒烟测试(需要服务器连接上测试用的硬件设备)
• Gitee Go触发流水线,在服务器进行代码格式审查与编译审查
• Gitee WebHooks用于触发Jenkins进行冒烟用例的测试。
• 服务器为作业机器,是运行格式检查、编译检查和冒烟测试的主机。
详细搭建步骤
在这里以Gitee Go做代码格式审查为例详细描述Gitee Go搭建流程:
1. 开通企业账户
注:支持免费开通并试用30天。
2. 开通Gitee Go服务:企业管理 > 代码仓库 > 某一仓库 > DevOps > Gitee Go > 同意并开通(每个代码仓库需要单独开通)
3. 领取免费500分钟构建时长:领取成功后可在 企业管理 > 基本管理设置 > 扩展应用 > Gitee Go 中看到免费赠送的时长,以及已开通Gitee Go服务的代码仓库。
4. 添加主机(流水线作业的服务器):企业管理 > 基本管理设置 > 计算资源管理 > 新建主机组
新建主机组:
主机组的ID后续在流水线文件中要用到
主机管理 > 新建主机:
复制命令,然后你需要找到一个Linux服务器或Linux虚拟机。在Linux执行这里复制的命令,会在Linux主机开启一个代理。
执行成功后可以在页面看到一台在线的主机。
主机组与仓库关联:
关联之后,仓库就能在流水线中顺利地调用到该主机资源
到此就已完成主机的添加。
5. 流水线配置文件
代码仓库 > DevOps > Gitee Go > 新建流水线
点击代码视图,进行流水线配置文件的编写:
Gitee Go 流水线配置文件通过 YAML 语言来描述的,保存后就会看到代码仓库的根目录下多了一个.workflow文件夹,在该文件夹下有一个名为gitee-ci-pipeline.yml的流水线配置文件。
附上用于代码拉取并进行格式审查的流水线文件:
version: '1.0' name: shell-code-style-check displayName: 代码格式审查 stages: - stage: '' name: shell-code-style-heck displayName: 代码格式审查 steps: - step: shell@agent name: shell-code-style-check displayName: 代码格式审查 hostGroupID: backend-server script: | echo '====Get git code====' pwd ls if [ ! -d "code" ];then echo "folder not exist, new it" mkdir code else echo "folder exist" fi cd code ls if [ ! -d "OneOS-Lite" ];then echo "folder not exist, start clone" git clone https://gitee.com/jixiaowei_cmiot/OneOS-Lite.git cd OneOS-Lite git checkout -b dev git pull origin dev else echo "folder exist, start pull" cd OneOS-Lite git pull origin dev fi echo "====Start code style check====" python .workflow/ci/format_check/run-clang-format.py --clang-format-executable /usr/bin/clang-format-12 -r components/ triggers: push: branches: include: - ^feature.* - dev
6. 触发流水线
从流水线文件的triggers看出,流水线的触发方式是dev分支代码push事件,流水线会在添加的主机上进行代码拉取或更新,再调用python工具进行代码格式的审查。
触发的前的工作:先在代码根目录放置.clang-format文件,该文件是代码格式化和代码格式检查的配置文件,可以从Clang-Format官方网页下载到模板再根据自己的需求调整:
再进行VS Code保存时自动格式化的设置,这样代码保存就完成了格式化:
其次,Linux主机上安装Python和clang-format。
还有,需要将python脚本放置到代码仓库的指定路径,这样流水线配置文件中描述的shell命令才能正确执行,在Linux主机运行的话clang-format.exe是不需要的:
最后,只需要push代码或合入pull request就能触发流水线。
7. 查看流水线结果
代码仓库 > DevOps > Gitee Go >,可以看到流水线和构建历史。
在构建历史中可以查看代码需要调整格式的地方。
OneOS是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-M/R/A、MIPS、RISC-V等主流CPU架构,兼容POSIX、CMSIS等标准接口,支持Micropython语言开发,提供图形化开发工具,能够有效提高开发效率并降低开发成本,帮助客户开发稳定可靠、安全易用的物联网应用。 官网地址:https://os.iot.10086.cn/
OneOS软件地址:http://www.oschina.net/p/cmcc-oneos
OneOS项目地址:https://gitee.com/cmcc-oneos/OneOS
OneOS技术交流群:158631242
|