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|测试运维精益技术 赋能过程

(0)

相关推荐

  • Jenkins 集成 SonarQube Scanner

    Jenkins 集成 SonarQube Scanner

  • 代码写的垃圾被嫌弃?

    重磅干货,第一时间送达 今天推荐三个插件,它们都是代码质量检测的神器.可以扫描检测出你项目中不符合规范的代码,他们分别是 SonarLint.SonarQube.Alibaba代码规约插件. 1.   ...

  • 我的devops实践经验分享一二

    前言 随着系统越来越大,开发人员.站点.服务器越来越多,微服务化推进,......等等原因,实现自动化的devops越来越有必要. 当然,真实的原因是,在团队组建之初就预见到了这些问题,所以从一开始就 ...

  • Python项目生成依赖包清单requirements.txt方法总结

    一.背景 工作中跨环境运行相同项目时,总会出现缺少各种包的问题,还需要一个个安装,相当的蛋疼,这里推荐一个工具叫pipreqs,可以通过一条命令直接生成项目所有依赖包清单requirements.tx ...

  • 大神崛路上必备的10大练手的Python项目 墙裂建议收藏!

    前言 Python毫无疑问是一门很伟大的语言,最近几年,很多人都在Python的世界里转悠.很多小白在成长的路上,做一些练手的项目就显得尤为重要.一来让你知道你所学习的Python真的只是皮毛,二来巩 ...

  • 手把手教你发布 Python 项目开源包

    好不容易码了个 python 项目,是不是很兴奋?那么怎么把这个项目发出去让大家看到呢?本文作者写了一份在 GitHub 上发布 python 包的简单分步指南. 作者以 SciTime 项目(一个对 ...

  • Python项目实战练习:制作小型图书管理系统

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于IT丛林 ,作者: IT丛林 说明:此程序适合入门基本练习. 私信回 ...

  • 2020 年 GitHub 上十大最火 Python 项目,看完之后我裂开了

    来源:Python 技术「ID: pythonall」 GitHub 作为程序员每天必逛的网站之一,上面有着太多优秀的开源项目,今天派森酱就带大家来梳理下在过去的一年里,GitHub 上最火的 Pyt ...

  • 【保姆级】Python项目(Flask网页)部署到Docker的完整过程(文末送书)

    大家好,我是辰哥~~~(文末包邮送三本数据类书籍) 前提:相信看到这篇文章的读者应该已经学会了Docker的安装以及Docker的基本使用,如果还不会的可以参考我之前的文章进行详细学习! 1.安装版: ...

  • VS环境Python项目包含多个.py文件相互引用方法

    例如,有filea.py文件里边包含自定义函数 func1 有fileb.py文件包含自定义函数 func1 在启动文件xxx.py中可以这样调用以上文件中含有的自定义函数: from filea i ...

  • Python项目实战——手把手教你使用Django框架实现支付宝付款

    回复"书籍"即可获赠Python从入门到进阶共10本电子书 近乡情更怯,不敢问来人. 一.前言 春节即将来临,大家肯定各种掏腰包花花花,小编相信大家在支付时候,微信.支付宝支付肯定 ...

  • Python写静态HTML

    背景 因为近期工作需要,常常要将测试结果/数据统计.汇总和展示,因此会有写静态HTML的需求,本文记录下python写静态HTML的小技巧 灵感 灵感时来源于unittest测试框架最常用的报告插件: ...