gitlab-ci实践1-代码ci格式化

779 阅读2分钟

一、本地安装步骤

第一步:环境配置

下载安装 ****spacecommander。在项目根目录下执行 path/to/spacecommander/setup-repo.sh

执行上述的指令后后,根目录中.git/hooks隐藏目录下会多出 pre-commit文件,且根目录会出现一个.clang-format的隐形文件,注意如果.clang-format是副本或者是软链接文件,请复制spacecommander目录的.clang-format替换它

副本文件如下:不可以使用❌

正文本文件如下:可以

第二步:配置扫描目录和忽略扫描目录

创建.formatting-directory 中指定待格式化的目录。各发布分支根据实际情况配置,示例配置如下:

./xxxx1/xxxx2/xxx3

./xxxx1/xxxx2/xxx3

创建.formatting-directory-ignore 中指定无需格式化的目录。各发布分支根据实际情况配置,示例配置如下:

./xxxx1/xxxx2/xxx3
./xxxx1/xxxx2/xxx3

注意:配置文件里的每一项都需要换行隔开,两个文件名不能改,如果需要改的话,您需要修改spacecommander项目的代码实现逻辑。

第三步:执行测试

执行git commit 指令时自动检测不符合规范的代码并提示 Xnip2022-10-29_12-08-24.jpg

如果一些文件想绕开格式化可以在git commit -m 'xxx' 后加 --no-verify

二、gitlab-ci配置自动格式化工作流

  • 实现成果:

Xnip2022-10-29_12-09-33.jpg 点击卡片可以直接跳转到gitlab的制定job详情里,有提示格式问题的代码和修复方式

  • 配置步骤:

实现条件:

保证把.clang-format 、 .formatting-directory、.formatting-directory-ignore、.git目录都已提交至远程仓库

第一步:gitlab-ci.yml文件配置

#push触发

style-when-push:

  stage: styleCheck
  script: ./xxx.sh $CI_COMMIT_BEFORE_SHA $CI_PIPELINE_SOURCE $CI_PROJECT_NAME $GITLAB_USER_LOGIN $CI_JOB_URL $CI_COMMIT_BRANCH $CI_COMMIT_MESSAGE

  tags:

    - lab1

  rules:

    - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BEFORE_SHA != "0000000000000000000000000000000000000000"

    

#mr触发   

style-when-mr:

  stage: styleCheck

  script: ./.sh $CI_MERGE_REQUEST_DIFF_BASE_SHA $CI_PIPELINE_SOURCE $CI_PROJECT_NAME $GITLAB_USER_LOGIN $CI_JOB_URL $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME $CI_MERGE_REQUEST_TARGET_BRANCH_NAME $CI_COMMIT_MESSAGE

  tags:

    - lab1

  rules:

    - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_DIFF_BASE_SHA

第二、第三步的生成文件至远程仓库

后语:

这里具体脚本感兴趣的小伙伴可以私聊我!