1

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。

更多关于极狐GitLab 或者 DevOps 的最佳实践,可以关注文末的极狐GitLab 公众号。

学习极狐GitLab 的相关资料:

  1. 极狐GitLab 官网https://gitlab.cn
  2. 极狐GitLab 官网文档https://docs.gitlab.cn
  3. 极狐GitLab 论坛https://forum.gitlab.cn/
  4. 极狐GitLab 安装配置https://gitlab.cn/install
  5. 极狐GitLab 资源中心https://resources.gitlab.cn

搜索【极狐GitLab】公众号,后台输入加群,备注gitlab,即可加入官方微信技术交流群。

Qodana 是 JetBrains 推出的一款代码静态扫描工具。JetBrains 自家的产品已经内置了和 Qodana 的集成,当然 Qodana 也支持和第三方工具的集成,比如和极狐GitLab。

在 JetBrains 官方文档的与 CI 系统的集成文档中,写明了与极狐GitLab CI 的集成方式,需要在极狐GitLab 的 .gitlab-ci.yml 文件中写入如下内容:

qodana:
   image:
      name: jetbrains/qodana-<linter>
      entrypoint: [""]
   cache:
      - key: qodana-2023.3-$CI_DEFAULT_BRANCH-$CI_COMMIT_REF_SLUG
        fallback_keys:
           - qodana-2023.3-$CI_DEFAULT_BRANCH-
           - qodana-2023.3-
        paths:
           - .qodana/cache
   variables:
      QODANA_TOKEN: $qodana_token
   script:
      - qodana --cache-dir=$CI_PROJECT_DIR/.qodana/cache

参数说明:

  • image.name:qodana 的镜像名称,针对不同的语言有不同的镜像,比如本问会使用 python 做演示,则镜像名称为 jetbrains/qodana-python
  • QODANA\_TOKEN:qodana token,主要用来将扫描分析结果发送到 qodana 服务用。

下面用极狐GitLab 上托管的 FastAPI 项目为例演示 qodana 和极狐GitLab 的集成。

创建 qodana token



Qodana 可以自己安装部署,也可以使用 qodana cloud,本文为了方便在 Qodana cloud 上创建了一个账号,并且创建了团队以及项目,在创建项目的过程中会创建一个项目token:

需要将此 token 以环境变量的形式保存到极狐GitLab CI 中。通过项目 --> 设置 --> CI/CD --> 变量进行添加:

在这里插入图片描述### 编写 .gitlab-ci.yml 文件

在极狐GitLab 的 CI 文件 .gitlab-ci.yml 文件,写入如下内容:

code-style-check:
 stage: test
 image:
   name: jetbrains/qodana-python
   entrypoint: [""]
 tags:
   - gitlab
 variables:
     QODANA_TOKEN: $qodana_token
 cache:
   - key: qodana-2023.3-$CI_DEFAULT_BRANCH-$CI_COMMIT_REF_SLUG
     fallback_keys:
         - qodana-2023.3-$CI_DEFAULT_BRANCH-
         - qodana-2023.3-
     paths:
         - .qodana/cache        -
 script:
   - qodana --save-report --results-dir=$CI_PROJECT_DIR/.qodana/results
       --cache-dir=$CI_PROJECT_DIR/.qodana/cache
 artifacts:
   paths:
       - qodana/results/
   expose_as: 'Qodana report'
本次运行使用了自建 Runner,所以使用了 tags,指定了使用自建 Runner。

创建 MR 测试

通过创建一个 MR,触发流水线:

在这里插入图片描述
可以查看 qodana 运行的整个日志:

在这里插入图片描述

可以在 qodana cloud 的页面上看到报告的详情:

在这里插入图片描述
点击可以查看具体的详情。

可以看到极狐GitLab 和 JetBrains qodana 的集成还是非常方便的。

搜索关注【极狐GitLab】公众号,成为 DevOps 技术专家。


极狐GitLab
64 声望36 粉丝

极狐(GitLab) 以“核心开放”为原则,面向中国市场,提供开箱即用的开放式一体化安全DevOps平台——极狐GitLab。通过业界领先的优先级管理、安全、风险和合规性功能,实现产品、开发、QA、安全和运维团队间的高效协同...