zoukankan      html  css  js  c++  java
  • .net持续集成sonarqube篇之 sonarqube与jenkins集成(插件模式)

    系列目录

    Jenkins通过插件集成Sonarqube

    通过上一节我们了解了如何配置以使jenkins ci环境中可以执行sonarqube构建,其实Sonarqube官方也提供了jenkins插件以便更方便的管理.使用插件来执行sonarqube项目有以下优点

    1.可以很清楚的看到项目是Sonarqube项目,如下图示

    avatar

    Sonarqube的begin,end不需要手动写,而是自动选择,项目名称,项目版本一目了然.不需要查看cmd信息.有点流水线的感觉.

    2.更好地与Sonarqube集成,请看下图

    avatar

    我们可以看到使用Sonarqube插件的项目是这样的,能够在jenkins页面展示项目的状态和sonarqube服务端的处理状态,我们点击图中的与sonarqube相关的图标会自动进入Sonarqube web管理页面,并且自动定位到本项目,这样如果构建项目特别多的情况下给我们带来很多方便.

    3.与Jenkins PipeLine集成

    以上仅仅是方便之处,然而并没有显示出插件无可取代之处,它的无可取代之处在于使用jenkins PipeLine时必须使用此插件.

    说了这么多,下面介绍如何安装配置sonarqube Jenkins插件.

    进入Jenkins插件管理界面,切换到'available'界面,输入sonarQube Scanner然后安装(关于jenkins插件安装前面章节有讲到,这里不再赘述).安装完成以后开始配置.

    工具选项配置

    进入Manage Jenkins>Global Tool Configuration

    找到sonarqube for msbuild配置如下

    avatar
    其中名称可以随便选择,只要方便管理即可.

    再找到sonarqube scanner,配置如下

    avatar
    配置完成后点击最下面的save保存

    点击完保存之后,我们再进入config system找到sonarqube servers配置如下

    avatar

    serverurl要根据实际情况配置,如果sonarqube和jenkins并不在同一台机器,则需要配置ip地址.

    下面我们新建一个自由式任务.名称为mysonar(名称随意)
    进入到Build栏目,点击Add Build Steps,我们从来拉列表中选择Sonarqube开始标识(通过前面的章节我们了解到,sonarqube构建包括开始标记,结束标记,然后中间是msbuild构建)

    avatar

    点击后会出现以下配置项,按实际情况配置即可

    avatar
    指定项目名,key(key可以任意起名,只做为惟一标识,并不是ssh登陆类似的key)

    然后再新建一个执行bat的步骤.如下图

    avatar

    这里很普通,指定一个要编译的项目,需要注意的是我这里有环境变量msbuild,如果找不到请添加环境变量或者指定msbuild完整路径.

    然后再添加一个步骤,这次选择SonarScanner for msbuild -end analysis.

    然后点击确定完成创建,我们点击build now触发一次构建.

    构建成功后信息如下图

    avatar
    我们点击红色框先的任意一项,就可以跳转到sonarqube web管理界面,如下图示

    avatar

    需要注意的是第一次运行并不能构建成功,这是因为Jenkins需要下载相关插件,插件下载成功后我们进入Jenkins oolshudson.plugins.sonar.MsBuildSQRunnerInstallation目录下的你的 SonarScanner for MSBuild的名字,它就是你在Global Tool Configuration>SonarScanner for MSBuild指定的名称,进去以后找到SonarQube.Analysis.xml对它进行配置,关于此文件的配置前面我们讲到过,这里不再赘述.

    Sonarqube插件集成单元测试覆盖报告

    回忆前面章节,添加sonarqube单元测试覆盖率报告需要额外执行一步运行单元测试的代码,这并不是重点,重点在于如何在Begin Analysis部分指定单元测试执行文件,这里通过指定Additional arguments来实现,如下图示

    avatar

    然后再在msbuild构建完成后添加一步执行单元测试的代码(可以复制前面的代码)就行了,这里需要说明的是前面为了方便讲解我们是在项目目录下执行脚本,使用了%CD%这样的相对路径,Jenkins中建议换成绝对路径,以防出现不必要的麻烦.

    完了再进入Sonarqube web管理界面,就可以看到有单元测试覆盖率报告了

    avatar

    Token方式与Sonarqube server交互

    上一节我们讲解了通过配置SonarQube.Analysis.xml方式实现与Sonarqube server交互(实际上我们执行构建的时候sonarqube runner是通过http方式把数据提交到sonarqube server),这样做有非常明显的缺点.第一是安全问题,我们知道其实我们是把admin的用户名和密码写入了SonarQube.Analysis.xml文件里,这样很容易暴露管理员账户,在企业生产环境中,如果有恶意的人获取了管理员账户,则可以进行任意构建,然后触发布,这样会造成非常严重的后果,即使被没有恶意的开发者获取到,开发者可能出于好奇心在生产环境中进行测试尝试,这样也可能会造成非常严重的后果.第二是管理很不方便,如果在生产环境的jenkins是分布式的,那么我们进入每一台服务器更改配置文件是很不方便的,如果管理员账户和密码更改了还要进入每台服务器更改,虽然现在有各种自动化的工具使得这种操作不是特别麻烦的问题,但是集中的配置更加方便维护.下面我们讲解如何通过在Jenkins中为Sonarqube server添加token来解决以上两个问题.

    在Sonarqube里生成token

    首先需要说明的是,只有管理员账户可以生成token,其它账户不可进行此操作.我们进入sonarqube web管理界面,执行以下操作

    avatar

    进入我的账户后security标签,可以看到如下界面

    avatar

    我们在红框内的文本框里输入key的名字,此时Generate按钮变为激活状态,我们点击一下就可以生成一个token

    avatar

    我们点击copy或者直接复制把token存储到文本文档或者其它地方,需要注意的是token必须保存,退出这个页面后token的值就会消失(这里说的消失是指不再显示,而不是真正的消失).

    把生成的token添加到Jenkins里

    我们再回到jenkins,进入Manage Jenkins>configure system找到SonarQube servers把token粘贴到Server authentication token

    avatar

    需要注意的时,如果已经在SonarQube.Analysis.xml配置了账号密码,则需要删除掉,即删除以下代码

    <Property Name="sonar.login">admin</Property>
    <Property Name="sonar.password">admin</Property>
    
  • 相关阅读:
    MongoDB 启动和关闭
    java protostuff 序列化反序列化工具
    第一天
    第六章
    第六章
    第六章
    第六章
    第五章---面向对象---1.软件开发/2.异常处理/3.try...except的详细用法
    第五章-面向对象-1.元类介绍/2.自定义元类控制类的行为/3.控制类的实例化行为/4.控制类的实例化行为的应用
    第五章---面向对象---1.绑定方法与非绑定方法介绍/2.绑定方法与非绑定方法应用/3.反射/4.内置方法
  • 原文地址:https://www.cnblogs.com/tylerzhou/p/11273847.html
Copyright © 2011-2022 走看看