Jenkins+SonarQube实现Python项目静态扫描
时间主题8.27(周二)14:00 基于用户故事地图的测试用例设计8.27(周二)20:00基于用户故事地图的测试用例设计8.28(周三)20:00python+Jenkins+Sonar持续集成
在DevOps理念中,CI/CD毫无疑问是最重要的一环,而代码质量检查则是CI中必不可少的一步。在敏捷开发的思想下,代码的迭代周期变短,交付速度提升,这个时候代码的质量就很难保证。测试只能保证功能完整与可用,而代码的质量纯靠review的话效率又很低,这个时候SonarQube就可以很好的帮助开发自动化检测代码质量,降低bug数量,也可以根据扫描结果养成良好的编程习惯,同时也可以减少测试的工作量,真正提升整个团队效率,实现DevOps理念。在上周六与本周三的复习课程中,芒果就带大家学习了怎么使用SonarQube来做Python项目的代码扫描工作,以及怎么使用Jenkins和SonarQube集成,这里我们做个小总结。SonarQube介绍Sonar(SonarQube)是一个开源平台,用于管理源代码的质量,它不仅是一个质量数据报告工具,更是代码质量管理平台。它通过插件的形式来管理代码,它支持的语言包括:Java,Python,PHP,C#,C,JS等。
SonarQube的由以下四部分组成:一个SonarQube Server一个SonarQube Database不同种类的SonarQube Plugins一个或者多个SonarScanners在持续集成中,sonar主要通过以下方式进行集成:
SonarQube的安装与配置Sonarqube的安装比较简单,由于最新的7.9版本必须使用11以以上版本的JDK,所以我们这里使用7.7或者7.8版本。Sonarqube的下载与安装:#下载地址:https://www.sonarqube.org/downloads/#解压:unzip sonarqube-7.7.zip#启动:windows:.\sonarqube\bin\windows-x86-64\StartSonar.bat其他平台:sonarqube/bin/linux-x86-64/sonar.sh console#访问:http://127.0.0.1:9000#登录(默认管理用户用户名、密码):admin/adminSonarqube的配置:#新建sonar用户(sonar使用root用户启动会失败):useradd sonarpasswd sonarchown -R sonar.sonar sonarqube/su sonar#创建sonar数据库:CREATE DATABASE sonar DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;GRANT ALL PRIVILEGES ON sonar.* TO 'root'@'%';FLUSH PRIVILEGES;#配置sonar server(vi conf/sonar.properties ):sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=falsesonar.jdbc.username=rootsonar.jdbc.password=123456sonar.sorceEncoding=UTF-8#配置sonar wrapper(vi conf/wrapper.conf):wrapper.java.command=/usr/java/jdk1.8.0_172/bin/javaSonar Scanner作为安装在构建或者持续集成服务器上的扫描工具,通过扫描代码,上传扫描结果给Sonar Server 以显示结果。Sonar Scanner安装:#下载地址:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/#配置sonar-scanner(vi conf/sonar-scanner.properties):sonar.host.url=http://localhost:9000sonar.sourceEncoding=UTF-8#将sonar scanner添加到环境变量(vi /etc/profile ):export SONAR-SCANNER_HOME=/usr/sonar-scannerexport PATH=$ SONAR-SCANNER_HOME /bin:$PATH#更新环境变量:source /etc/profile安装好Sonar Scanner就可以在该主机上进行对应项目的静态扫描工作。要想列出已经下载下来的镜像,可以使用 docker image ls 命令。Jenkins与SonarQube的持续集成通过Jenkins使用的Sonar Scanner插件可以构建自动化的项目代码扫描计划,并将扫描结果反馈给Sonar Server。在安装好Sonar Scanner插件之后需要在Jenkins中添加Sonar Server相关配置:
并对构建服务器上Scanner进行配置:
接下来就可以在构建与部署任务之前添加一个扫描任务了:
手工构建或者等待构建触发器出发构建,就可以完成整个代码扫描任务。当然Sonar的使用不仅仅如此简单,比如我们可以去添加自定义的扫描规则,因为篇幅原因,我们仅仅介绍以上部分,对于更多的内容,我们会在之后的文章进行更新。
周六Vip课程预告本周六芒果将带大家继续TestOps测试运维Python专项课程,在对整个Django的开发、扫描、单测以及他们的容器化管理、持续集成有个认识之后,我们将学习Django项目的自动化测试环境。
每周六全天Vip课程,每周三晚免费课程总结及回顾答疑TestOps|测试运维精益技术 赋能过程