添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
volumes : - /cem/sonarqube/conf:/opt/sonarqube/conf - /cem/sonarqube/data:/opt/sonarqube/data - /cem/sonarqube/extensions:/opt/sonarqube/extensions - /cem/sonarqube/cacerts:/opt/java/openjdk/lib/security/cacerts:ro environment : SONAR_JDBC_URL : jdbc:postgresql://postgresql:5432/sonarqube SONAR_JDBC_USERNAME : sonarqube SONAR_JDBC_PASSWORD : ********* container_name : sonarqube restart : unless-stopped

SonarScanner

则是通过gitlab-ci.yml实现,官方文档并不详细,遇到一个小问题 因为我没有在项目中写sonar-project.properties文件,通过gitlab-ci.yml中variables和添加script的-D参数实现的,官方并没有说哪些需要用variables中映射环境变量实现,哪些需要通过-D参数传过去。慢慢试,得出以下:

  variables:
    SONAR_HOST_URL: "http://192.168.1.10:9000"
    SONAR_TOKEN: "606a5553c22e3a960ce35463989e8ce58077abd6"
    SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"
    GIT_DEPTH: "0"
  cache:
    key: "${CI_JOB_NAME}"
    paths:
      - .sonar/cache
  script:
    - sonar-scanner -Dsonar.qualitygate.wait=true -Dsonar.projectKey=${CI_PROJECT_NAMESPACE}:${CI_PROJECT_NAME} -Dsonar.exclusions=pb/*

SonarQube+Gitlab

虽然SonarQube可以匿名上传分析报告,但是允许匿名登录则游客可以浏览项目代码,不安全!

看到官方文档有写可以通过Gitlab登录,不需要分配账号,节省了很多管理麻烦,使用也更方便。但实现过程却遇到了问题,记录如下

第1个问题则是TLS证书问题:安全起见,SonarQube回调地址必须是https,但SonarQube部署是在本地。于是想了一个主意:在公网公司官方上加了一个子链接,如www.xxx.com/sonar,NG上配置该地址跳转到本地,这个骚操作不错哈~~~

                location ~ /sonar {
                        rewrite ^/sonar/(.*) http://192.168.1.10:9000/$1 permanent;

本来以为可以了,结果测试发现跳不过去,一直报错,查Sonar日志:unable to find valid certification path to requested target。后面想明白了,公网跳本地是正常的。但这个错误本地调用Gitlab验证的时候报错了,因为本地Gitlab是https的,但证书却是自签名的,Java不认! 网上找资料,进容器中测试,发现把自己的ca导入java默认的ca文件中,wget测试通过!于是

先复制自签名的ca.crt到容器,再在容器中把自己的ca文件导入java默认的ca中:

# 进入容器运行
cd /opt/java/openjdk/lib/security/
keytool -import -alias <自定义别名> -keystore cacerts -file ca.crt -trustcacerts

管理员账号进入Applications,添加一个Application

Name:SonarQube,只是标识作用 URI:https://domain.com/sonar/oauth2/callback/gitlab Scopes:api/read_user

配置SonarQube

  • ALM集成
  • GitLab:启用GitLab认证,并配置GitLab URL,Application ID,Secret,勾选:Allow users to sign-up/Synchronize user groups
  • 配置 -> 通用:Server Base URL:https://domain.com/sonar,以及可选的邮件配置
  • 配置 -> 权限:Force user authentication:勾选
  • https://stackoverflow.com/questions/55617053/sonarqube-remove-code-view-for-anyone-group
  •