1 持续集成是什么?
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
1.2 Jenkins
Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
目前微服务架构大行其道,需要部署的项目越来越多,如果每次都由运维人员手工部署,那么程序部署的成本极高。
Jenkins使用极低的代价能部署一个软件,自动化进行项目构建,项目测试,静态扫描,上传构建,远程备份,发布。很多时候,你只需要点击立即构建,就进行了项目的部署操作。
当然它不仅仅提供这些功能。权限管理,可以让不同的人员负责各自的项目建构。多项目构建,可以一次性完成多个项目的构建。
官方地址:https://jenkins.io/
2 程序静态分析是什么?
2.1 定义
程序静态分析(ProgramStatic Analysis)是指在不运行代码的方式下,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。目前静态分析技术向模拟执行的技术发展以能够发现更多传统意义上动态测试才能发现的缺陷,例如符号执行、抽象解释、值依赖分析等等并采用数学约束求解工具进行路径约减或者可达性分析以减少误报增加效率。目前的静态分析工具,无论从科研角度还是实用性角度还有很大的提高余地,国际最好分析工具误报率在5-10%之间,能够报出的缺陷种类也仅有几百种。我国较好静态分析工具较少,一些高校正在致力于在此方面的研究和开发(成果较突出的如北京大学等)。
2.2 SonarQube
Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量
通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测
我想说的是,SonarQube能够很好地与持续集成工具Jenkins集成起来,能够在程序自动化部署的时候生成结果报告。并且还可以和idea插件sonarlint配合起来,在开发过程中就进行代码静态分析。
官网地址:https://www.sonarqube.org/downloads/
Ps:sonarQube插件安装非常慢。
3 怎样做?
说明:案例采用的项目是基于SpringBoot开发的项目,版本控制使用Git,依赖管理使用Maven
3.1 Jenkins安装
暂时略过
http://10.89.0.130:8080
3.2 SonarQube安装
暂时略过
http://10.89.0.130:8083
3.3 Jenkins插件安装
Multijob plugin
用于多项目构建。如可创建Job1构建项目A,Job2构建项目B,JOB3同时构建项目A、B
Publish Over SSH
用于项目构建成功后,上传项目到指定服务器的指定目录,并执行相应的shell脚本
SonarQubeScanner for Jenkins
用于在项目构建阶段,执行程序静态分析,并将相应的结果反馈到SonarQube,进行可视化查看
3.4 SonarQube插件安装
Chinese Pack
汉化插件
3.5 IDEA集成SonarQube
IDEA开发工具集成SonarQube,那么即可在开发阶段就进行程序静态分析。并且与Jenkins使用相同的分析规则。
IDEA安装插件SonarLint
File->Settings->Plugins->Browse Repositories
安装插件后重启IDEA,再次进入Settings
配置本地程序与SonarQube关联