SonarQube部署

    如果你不知道SonarQube是做什么的,那么请参考下面链接(包括但不限于)进行学习:

    仓库设置

    部署SonarQube

    1. --set persistence.enabled=true \
    2. --set persistence.storageClass=nfs-provisioner \
    3. --set postgresql.persistence.storageClass=nfs-provisioner \
    4. --set ingress.enabled=true \
    5. --set ingress.'hosts[0]'=sonarqube.example.choerodon.io \
    6. --set plugins.'install[0]'=https://file.choerodon.com.cn/choerodon-install/sonarqube/sonar-auth-choerodonoauth-plugin-1.5.3.RELEASE.jar \
    7. --create-namespace \
    8. --namespace c7n-system
    • 更多参数及含义请参考

    验证部署

    • 访问设置的SonarQube域名出现以下界面即部署成功

    • 编写参数配置文件 sonarqube-client.yaml

    • 部署服务

      1. helm upgrade --install sonarqube-client c7n/mysql-client \
      2. -f sonarqube-client.yaml \
      3. --create-namespace \
      4. --namespace c7n-system
    • 使用管理员用户登录 SoanrQube
    • 配置默认新建项目为Private, 进入 Administration -> Projects -> Management SonarQube部署 - 图2

    • 更改默认权限模板, 进入 Administration -> Security -> Permission Templates ,去掉 sonar-users 用户组所有权限 SonarQube部署 - 图4

    • 使用管理员用户登录 SoanrQube
    • 进入 Administration -> Configuration ->
    • 更改 Enabled 为启用
    • 更改 sonar url 为当前使用的SonarQube实际地址

    • 退出登录,测试使用choerodon登录,出现如下界面

    • Choerodon权限与SonarQube权限为lazy分配,对于用户登录后在SonarQube没有权限的应用服务,从Choerodon代码质量详情界面,跳转登录到SonarQube即可。

    Choerodon应用关联SonarQube项目

    • Choerodon 应用关联 SonarQube 针对 maven 和非 maven 项目有不同的配置。

      • 如果是 maven 项目可以在 .gitlab-ci.yml 文件 build 阶段添加
      1. - >-
      2. mvn --batch-mode verify sonar:sonar
      3. -Dsonar.host.url=$SONAR_URL -Dsonar.login=$SONAR_LOGIN
      4. -Dsonar.gitlab.project_id=$CI_PROJECT_PATH
      5. -Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA
      6. -Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
      7. -Dsonar.analysis.serviceGroup=$GROUP_NAME
      8. -Dsonar.projectKey=${GROUP_NAME}:${PROJECT_NAME}
      • 其他项目可以使用 sonar-scanner,在 .gitlab-ci.yml 文件 build 阶段添加

    • sonar.projectKey=${GROUP_NAME}:${PROJECT_NAME}不可更改;否则,在查看代码质量时将获取不到对应数据

    • sonar.sources 指定扫描代码的路径

    • GROUP_NAME和PROJECT_NAME是devops-service内置的环境变量, GROUP_NAME=当前项目所在组织编码-当前项目编码,PROJECT_NAME=当前应用编码