Docker 主要解决环境配置问题,这里介绍一下如何通过Docker简单的搭建和部署一个SonarQube静态代码扫描平台以及如何接入Jenkins持续集成及时通知开发人员。
简介
SonarQube是一个开源的代码质量管理系统,可以扫描项目中重复代码、编码标准、单元测试、代码覆盖率、代码复杂度、潜在Bug等。支持Java、C/C 、C#、PHP、Groovy、JavaScript、Python等多种语言。代码扫描的好处在于可以通过配置规则扫描代码设计缺陷和提供代码优化建议从而提高代码的质量。本文介绍使用docker技术在Mac环境下搭建SonarQube并配合Jenkins和钉钉机器人完成代码的扫描及报告通知。
Docker安装
这里介绍最简单的手动安装方式,可以通过这个链接下载:
代码语言:javascript复制https://download.docker.com/mac/stable/Docker.dmg
如同 MacOS 其它软件一样,安装也非常简单,双击下载的 .dmg 文件,然后将那只鲸鱼图标拖拽到 Application 文件夹即可(其间可能会询问系统密码)。
SonarQube安装
这里参考了名叫 jamesz2011 网友的方案略加修改,依次执行下面的shell命令即可:
代码语言:javascript复制wget https://github.com/logan62334/sonarqube/raw/master/ifSonarqube.shsudo chmod a x ifSonarqube.shruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/nullbrew install dos2unixsudo dos2unix ifSonarqube.sh./ifSonarqube.sh
当你看到下面的界面时,证明已经成功启动:
然后访问:http://127.0.0.1:9000 即可看到成功后的SonarQube页面:
Jenkins配置
这里就不详细介绍Jenkins的安装和使用了,直接讲如何配置Sonar检查任务:
在插件管理中搜索SonarQube Scanner for Jenkins并安装,在系统设置中配置sonar的服务地址(即http://127.0.0.1:9000),注意要把127.0.0.1换成搭建有sonar服务的服务器IP,还有就是第一次启动sonar平台时生成的token。
接下来在Jenkins所在服务器的maven setting文件中增加下面的配置项:
代码语言:javascript复制<profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <!-- Optional URL to server. Default value is http://localhost:9000 --> <sonar.host.url> http://ip:9000 </sonar.host.url> </properties> </profile>
最后来看看sonar扫描任务的job怎么配置:
这里通过参数化构建的方式来为不同的代码仓库做检查:
然后增加maven构建任务:
代码语言:javascript复制clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true -P devsonar:sonar
最后增加构建后任务,同过Python脚本分析项目中pom.xml文件提取groupId和artifactId来拼接报告地址:
代码语言:javascript复制if [ ! -d "venv" ]; then virtualenv venv fi . venv/bin/activate pip install requests python /Users/xxx/tools.py pom.xml
#tools.py:wget https://github.com/logan62334/sonarqube/raw/master/tools.py