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