Gitlab 中是支持代码质量检查和扫描的,但是免费版不支持在CI流水线中查看报告,如下为Gitlab中对代码质量功能的支持情况
因此,在实际使用中有必要将Gitlab和SonarQube集成
(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) 如下显示配置集成完成
(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账号登录,根据提示点击一下授权即可
(1) 回到【Projects】标签,然后点击【From Gitlab】
(2) 此时需要继续输入从 Gitlab 获取到的 Access token
(3) 然后选择一个项目(比如Java 项目),点击【setup】
(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步骤
比如这里配置如下:
sonarqube-check:
image: maven:3.6.3-jdk-11
stage: lint
variables:
SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Defines the location of the analysis task cache
GIT_DEPTH: "0" # Tells git to fetch all the branches of the project, required by the analysis task
cache:
key: "${CI_JOB_NAME}"
paths:
- .sonar/cache
script:
- 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
allow_failure: true
except:
- tags # or the name of your main branch
tags:
- ossscms_docker_in_docker