无需修改build.gradle配置,通过命令行及CI前置插件配置实现Jenkins集成SonarQube的方案问询
无需修改build.gradle配置,通过命令行及CI前置插件配置实现Jenkins集成SonarQube的方案问询
兄弟,我完全get到你的需求了——不想动项目里的build.gradle加SonarQube相关配置,就想在Jenkins跑Sonar扫描任务前,通过CI流程临时引入插件然后执行扫描是吧?这事儿完全能搞定,给你捋捋具体操作思路:
第一步:先搞定Jenkins的SonarQube插件准备
- 先在Jenkins的「插件管理」里安装SonarQube Scanner插件(如果还没装的话),这个插件是核心,能帮我们在CI流程里动态注入Sonar的配置,不用碰本地项目文件。
- 接着去Jenkins的「系统配置」里添加你的SonarQube服务器信息:填好服务器URL、生成的Sonar令牌,给服务器起个好记的名字,后面会用到。
第二步:两种命令行临时引入插件的方式
方式1:直接在Gradle命令里指定插件
在Jenkins任务的构建步骤里,选「执行shell」或者「Invoke Gradle script」,执行下面的命令就行:
./gradlew sonarqube --plugin org.sonarqube:sonarqube:4.4.1.3373 \ -Dsonar.projectKey=你的项目唯一标识 \ -Dsonar.host.url=http://你的Sonar服务器地址 \ -Dsonar.token=你的Sonar访问令牌
这里的--plugin参数会临时拉取SonarQube插件到本次构建的环境里,绝对不会修改本地的build.gradle,用完就丢,完全符合你的需求。
方式2:借助Jenkins插件的环境注入简化命令
如果不想每次都写一堆参数,可以在Jenkins任务的「构建环境」里勾选「Prepare SonarQube Scanner environment」,然后选择你之前配置好的Sonar服务器。
之后构建步骤里只需要执行:
./gradlew sonarqube
Jenkins会自动把Sonar的服务器URL、令牌这些配置通过环境变量注入到Gradle构建里,命令更简洁,也不用手动写一堆参数。
额外提醒
如果是多模块项目,这个方案同样适用,只需要确保sonar.projectKey配置正确,Gradle会自动扫描所有模块的代码。
备注:内容来源于stack exchange,提问作者M. Behnasr
相关产品推荐
相关产品推荐

