系列目录html
经过上一节咱们了解了如何配置以使jenkins ci环境中能够执行sonarqube构建,其实Sonarqube官方也提供了jenkins插件以便更方便的管理.使用插件来执行sonarqube项目有如下优势web
Sonarqube的begin,end不须要手动写,而是自动选择,项目名称,项目版本一目了然.不须要查看cmd信息.有点流水线
的感受.安全
咱们能够看到使用Sonarqube插件的项目是这样的,可以在jenkins页面展现项目的状态和sonarqube服务端的处理状态,咱们点击图中的与sonarqube相关的图标会自动进入Sonarqube web管理页面,而且自动定位到本项目,这样若是构建项目特别多的状况下给咱们带来不少方便.服务器
以上仅仅是方便之处,然而并无显示出插件无可取代之处,它的无可取代之处在于使用jenkins PipeLine时必须使用此插件.ssh
说了这么多,下面介绍如何安装配置sonarqube Jenkins插件.分布式
进入Jenkins插件管理界面,切换到'available'界面,输入sonarQube Scanner
而后安装(关于jenkins插件安装前面章节有讲到,这里再也不赘述).安装完成之后开始配置.工具
进入Manage Jenkins>Global Tool Configuration
单元测试
找到sonarqube for msbuild
配置以下测试
其中名称能够随便选择,只要方便管理便可.ui
再找到sonarqube scanner
,配置以下
配置完成后点击最下面的save
保存
点击完保存以后,咱们再进入config system
找到sonarqube servers
配置以下
serverurl要根据实际状况配置,若是sonarqube和jenkins并不在同一台机器,则须要配置ip地址.
下面咱们新建一个自由式任务.名称为mysonar(名称随意)
进入到Build
栏目,点击Add Build Steps
,咱们历来拉列表中选择Sonarqube开始标识(经过前面的章节咱们了解到,sonarqube构建包括开始标记,结束标记,而后中间是msbuild构建)
点击后会出现如下配置项,按实际状况配置便可
指定项目名,key(key能够任意起名,只作为唯一标识,并非ssh登录相似的key)
而后再新建一个执行bat的步骤.以下图
这里很普通,指定一个要编译的项目,须要注意的是我这里有环境变量msbuild,若是找不到请添加环境变量或者指定msbuild完整路径.
而后再添加一个步骤,此次选择SonarScanner for msbuild -end analysis.
而后点击肯定完成建立,咱们点击build now
触发一次构建.
构建成功后信息以下图
咱们点击红色框先的任意一项,就能够跳转到sonarqube web管理界面,以下图示
须要注意的是第一次运行并不能构建成功,这是由于Jenkins须要下载相关插件,插件下载成功后咱们进入
Jenkins\tools\hudson.plugins.sonar.MsBuildSQRunnerInstallation
目录下的你的 SonarScanner for MSBuild
的名字,它就是你在Global Tool Configuration>SonarScanner for MSBuild
指定的名称,进去之后找到SonarQube.Analysis.xml
对它进行配置,关于此文件的配置前面咱们讲到过,这里再也不赘述.
回忆前面章节,添加sonarqube单元测试覆盖率报告须要额外执行一步运行单元测试的代码,这并非重点,重点在于如何在Begin Analysis
部分指定单元测试执行文件,这里经过指定Additional arguments
来实现,以下图示
而后再在msbuild构建完成后添加一步执行单元测试的代码(能够复制前面的代码)就好了,这里须要说明的是前面为了方便讲解咱们是在项目目录下执行脚本,使用了%CD%
这样的相对路径,Jenkins中建议换成绝对路径,以防出现没必要要的麻烦.
完了再进入Sonarqube web管理界面,就能够看到有单元测试覆盖率报告了
上一节咱们讲解了经过配置SonarQube.Analysis.xml
方式实现与Sonarqube server交互(实际上咱们执行构建的时候sonarqube runner是经过http方式把数据提交到sonarqube server),这样作有很是明显的缺点.第一是安全问题,咱们知道其实咱们是把admin的用户名和密码写入了SonarQube.Analysis.xml
文件里,这样很容易暴露管理员帐户,在企业生产环境中,若是有恶意的人获取了管理员帐户,则能够进行任意构建,而后触发布,这样会形成很是严重的后果,即便被没有恶意的开发者获取到,开发者可能出于好奇心在生产环境中进行测试尝试,这样也可能会形成很是严重的后果.第二是管理很不方便,若是在生产环境的jenkins是分布式的,那么咱们进入每一台服务器更改配置文件是很不方便的,若是管理员帐户和密码更改了还要进入每台服务器更改,虽然如今有各类自动化的工具使得这种操做不是特别麻烦的问题,可是集中的配置更加方便维护.下面咱们讲解如何经过在Jenkins中为Sonarqube server添加token
来解决以上两个问题.
首先须要说明的是,只有管理员帐户能够生成token,其它帐户不可进行此操做.咱们进入sonarqube web管理界面,执行如下操做
进入个人帐户后security
标签,能够看到以下界面
咱们在红框内的文本框里输入key的名字,此时Generate按钮变为激活状态,咱们点击一下就能够生成一个token
咱们点击copy
或者直接复制把token存储到文本文档或者其它地方,须要注意的是token必须保存,退出这个页面后token的值就会消失(这里说的消失是指再也不显示,而不是真正的消失
).
咱们再回到jenkins,进入Manage Jenkins>configure system
找到SonarQube servers
把token粘贴到Server authentication token
须要注意的时,若是已经在
SonarQube.Analysis.xml
配置了帐号密码,则须要删除掉,即删除如下代码
<Property Name="sonar.login">admin</Property> <Property Name="sonar.password">admin</Property>