目标是要在目标服务器上使用docker工具部署好sonar环境,然后再集成到Jenkins中实现自动化的代码审查工作。
Docker
首先Dokcer的源大部分现在都用不了,于是我上网查询,终于找到了一个可用的镜像。
编辑/etc/docker/daemon.json
文件,在里面添加下面的内容:
{ "registry-mirrors" : [ "https://docker.m.daocloud.io", "https://noohub.ru", "https://huecker.io","https://dockerhub.timeweb.cloud" ]
}
然后重启一下docker服务就可以使用正常使用docker了。
sonar
使用docker部署sonar环境特别简单,只需要两行代码,但是在没有考虑好sonar版本和java版本的对应情况下,我第一遍部署的环境无法使用,因为目前最新的sonar版本要求java17以上,而我的jenkins里面配置的两个java,一个是1.8,一个是11版本,所以我需要降低sonar版本,读者可以根据自己需要去进行选择下载对应版本的sonar或者java。同时sonar7.9以上就不再支持mysql了。
docker pull sonarqube:7.8-communitydocker run -itd --name sonarqube:7.8-community -p 9000:9000 sonarqube:7.8-community
执行上面两行代码。即可成功安装sonarqube,在浏览器中输入ip加端口9000即可进入。默认初始用户名密码是admin和admin。
Jenkins集成
1.下载插件
首先要在Jenkins的插件管理中下载使用sonar时对应的插件sonarqube scanner。
2.配置服务端
然后需要在系统配置中配置好sonarqube的服务端,填写好目标路径,就是IP地址:9000端口的那个路径。
在这里,还需要配置一下凭证,打开sonar网页端.
点击右上角的my account
在security一栏中,创建一个token
然后把创建出来的token复制一下,粘贴到Jenkins中下面的创建凭证中。注意,类型选择secret text。
3.最后,在全局工具管理中,再配置一下sonarqube scanner
这样就可以在工程中使用sonar了。
4.创建一个jenkins项目,在增添构建步骤一栏选择下面的。
结合下面的这段代码即可。
sonar.projectName=${JOB_NAME} #项目在sonarqube上的显示名称
sonar.projectKey=${JOB_NAME} #项目的唯一标识,不能重复
sonar.sources=. #扫描哪个项目的源码