本文目标
SonarQube用于源码质量和安全检查,jenkins是持续集成和构建开源工具,本文演示如何实现通过 git 提交到代码仓库后自动拉起SonarQube扫描任务,并查看扫描结果
说明:
1. Jenkins 为本地安装,本地访问链接为默认的。
2. git仓库以gitee为例。
3. SonarQube为本地安装。
jenkins安装插件
- Gitee Plugin
在jenkins插件管理中的可选插件中搜索Gitee Plugin并安装,由于我已经安装该插件,因此显示在已安装页签中。
- SonarQube Scanner for Jenkins
同样的方法安装SonarQube Scanner for Jenkins插件
jenkins配置
- 内网穿透
由于gitee是 外网 环境,要实现jenkins和gitee之间的联动,我们需要把jenkins的本地服务暴露到外网中,访问按照指导进行安装,非常简单,针对windows系统执行命令稍微有点不同
ding -config=./ding.cfg -subdomain=mytest 8080
执行后,根据显示的信息访问其中一个链接即可,这个时候我们的jenkins就暴露到外网了。
- 系统配置
系统配置入口
全局属性中配置 环境变量 ,必须配置的项目JAVA_HOME,需要指定JDK的路径,如果你的项目中需要用到 maven ,也需要配置另外两个环境变量,只有配置了环境变量,jenkins才能识别相应的命令。
SonarQube servers配置,name可自行定义,Server URL为SonarQube的访问 地址 ,默认配置是 , Server authentication token为SonarQube项目中使用的令牌,需要在jenkins中首先创建并选择对应的令牌。
首先创建令牌,其中2为SonarQube项目中使用的令牌(创建项目时会提示创建令牌,需要把生成的令牌copy并保存后,因为创建完成后就不可见了)
Gitee 配置,其中链接名可以自由定义,Gitee 域名 URL为 ,证书令牌必须选择Gitlee API令牌,需要在jenkins中进行创建并选择,点击测试连接返回成功表示设置ok。
创建Gitee API令牌,根据令牌中提示的链接先到gitee上生成令牌并复制到Gitee API令牌中
- 全局工具配置
全局工具配置入口
配置SonarQube 扫描器 的路径,相关扫描器的下载和执行参考
jenkins创建SonarQube扫描任务
首先创建自由风格的任务
Gitee链接选择已创建好的gitee链接
源码管理配置, Repository URL为gitee仓库的URL地址,Credentials为gitee仓库的认证,指定分支默认为master
创建gitee仓库的认证信息
构建触发器配置,勾选 Gitee webHook 触发构建,其他配置可以保持默认,记录其中的URL地址,后面配置webHook需要用到
点击生成webHook密码
构建步骤增加Execute SonarQube Scanner
Server authentication token选择 SonarQube servers配置时创建的token
其中task to run输入scan,即分析代码,这个名字不能随意更改,否则拉起会报错(也可以输入-X表示按照debugging模式输出), Analysis properties参考下面的内容, sonar.projectKey的值可以自由定制,其他参数都未使用。
# must be unique in a given SonarQube instance
sonar.projectKey=demo
# --- optional properties ---
# defaults to project key
#sonar.projectName=My project
# defaults to 'not provided'
#sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Defaults to .
#sonar.sources=.
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
gitee配置
登录gitee,在仓库的管理中的weebhook选项中添加weebHook
其中 URL使用上面源码管理中提示的URL,但是需要把内网地址替换为穿透后的外网地址;WebHook 密码/签名密钥输入jenkins源码管理配置中生成的密码,输入后点击激活。
测试效果
至此,gitee和Jenkins的联动配置已完成,可以场景向该仓库提交代码查看jenkins任务有没有触发扫描任务,正常会自动触发拉起扫描任务,扫描任务完成后点击SonarQube链接即可查看扫描结果。