SonarQube----SonarQube和Gitlab集成
作者:redrose2100   类别:    日期:2022-08-15 08:57:56    阅读:2110 次   消耗积分:0 分

一、背景

1.1 Gitlab 中对代码质量的支持

Gitlab 中是支持代码质量检查和扫描的,但是免费版不支持在CI流水线中查看报告,如下为Gitlab中对代码质量功能的支持情况

因此,在实际使用中有必要将Gitlab和SonarQube集成

二、SonarQube和Gitlab的集成

2.1 SonarQube 配置集成Gitlab

(1) Gitlab 生成一个供 SonarQube使用的Token
(1) 这里需要使用一个能访问 Gitlab上所有项目的账号,然后依次从【Preference】-【Access Token】,然后生成一个token,注意该token要给足权限,然后复制token,比如 kH3_tssbTYpZQDtMwgwo

(2) 使用 admin 登录 SonarQube,然后依次点击【Administrator】-【DevOps Platform Integrations】-【Gitlab】,点击【Create Configuration】按钮,如下图

(3) 然后配置gitlab的名字,api地址,以及token,如下图

(4) 如下显示配置集成完成

2.2 SonarQube 配置使用 Gitlab 账号登录

(1) 首先使用 Admin 账号或者具有 Admin 权限的账号登录 Gitlab,点击【Application】

(2) 创建应用, 其中名字自己定义,重定向 url 为 SonarQube的域名后加上 /oauth2/callback/gitlab,勾选 api 调用权限,如下图

(3) 创建完成后,如下图,将应用ID和 Secret 拷贝下来

(4) 使用admin账号登录SonarQube,切换到配置集成Gitlab的页面,如下图

(5) 如下图所示,首先启用使用Gitlab用户登录SonarQube平台的按钮,然后依次填写gitlab的url已经上面步骤3步骤下来的应用ID和secret

(6) 配置完成后注销,然后就可以看到登录界面出现了通过Gitlab账号登录的途径,此时如果gitlab已经登录了,就可以通过gitlab账号登录,根据提示点击一下授权即可

2.3 配置SonarQube 从Gitlab 导入项目

(1) 回到【Projects】标签,然后点击【From Gitlab】

(2) 此时需要继续输入从 Gitlab 获取到的 Access token

(3) 然后选择一个项目(比如Java 项目),点击【setup】

2.4 配置 Gitlab CI

(1) 在 SonarQube上点击【Projects】,然后点击要配置的项目,再点击【with Gitlab CI】,如下:

(2) 点击【Maven】,然后将如下内容拷贝到代码中的pom.xml中,然后继续

(3) 按照如下提示在 Gitlab 上的CI变量中设置变量

(4) 在 Gitlab上对应的项目中一次【Setting】-【CICD】-【Variable】,点击【Expand】展开

(5) 然后设置变量SONAR_TOKEN

(6) 设置变量SONAR_HOST_URL

(7) 然后参照如下配置在gitlab的代码仓的 .gitlab-ci.yml 文件中配置code-quality步骤

比如这里配置如下:

  1. sonarqube-check:
  2. image: maven:3.6.3-jdk-11
  3. stage: lint
  4. variables:
  5. SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Defines the location of the analysis task cache
  6. GIT_DEPTH: "0" # Tells git to fetch all the branches of the project, required by the analysis task
  7. cache:
  8. key: "${CI_JOB_NAME}"
  9. paths:
  10. - .sonar/cache
  11. script:
  12. - mvn verify sonar:sonar -Dsonar.projectKey=oepkgs_oepkgs-build_AYKgVlgM_sH5zM_3_Sbt -Dspring.redis.host=xx.xx.xx.xx -Dspring.redis.port=6379 -Dspring.redis.password=xxxxxx -Dspring.datasource.url=jdbc:mysql://xx.xx.xx.xx:3306/oepkgs-build-test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8&allowPublicKeyRetrieval=true
  13. allow_failure: true
  14. except:
  15. - tags # or the name of your main branch
  16. tags:
  17. - ossscms_docker_in_docker
始终坚持开源开放共享精神,同时感谢您的充电鼓励和支持!
版权所有,转载本站文章请注明出处:redrose2100, http://blog.redrose2100.com/article/353
个人成就
  • 博客总数: 613 
  • 阅读总量: 709123 
  • 2022年 : 371 篇 
  • 2023年 : 211 篇 
  • 2024年 : 31 篇 
  • 2025年 : 0 篇 
测试开发技术全栈公众号
DevOps技术交流微信群