您的位置:  首页 > 技术 > go语言 > 正文

Gitee Go代码格式审查、程序编译和冒烟测试 | CI/CD搭建流程-Gitee篇

2022-01-06 12:00 https://my.oschina.net/u/5443273/blog/5392688 OneOS小运营 次阅读 条评论

本文分享自中移OneOS微信公众号:《CI/CD搭建流程-Gitee篇》,作者: Kisann。

Gitee CI/CD能力

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。

让Gitee Go做什么

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

本文将手把手教学如何让Gitee Go帮我们做代码格式审查、程序编译和冒烟测试。

快速搭建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

展开阅读全文                                    
  • 0
    感动
  • 0
    路过
  • 0
    高兴
  • 0
    难过
  • 0
    搞笑
  • 0
    无聊
  • 0
    愤怒
  • 0
    同情
热度排行
友情链接