• .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>
    
  • 相关阅读:
    oracle 10g 免安装客户端在windows下配置
    sql2005 sa密码
    使用windows live writer 有感
    windows xp SNMP安装包提取
    汉化groove2007
    迁移SQL server 2005 Reporting Services到SQL server 2008 Reporting Services全程截图操作指南
    foxmail 6在使用中的问题
    AGPM客户端连接不上服务器解决一例
    SpringSource Tool Suite add CloudFoundry service
    Java 之 SWing
  • 原文地址:https://www.cnblogs.com/tylerzhou/p/11273847.html
Copyright © 2020-2023  润新知