.net持续集成sonarqube篇之 sonarqube与jenkins集成(插件模式) (2)

回忆前面章节,添加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>admin</Property> <Property>admin</Property>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzwyf.html