プラグインによるジェンキンスはSonarqubeを統合しました
1によって、私たちは、実際にSonarqube公式にも簡単に管理のためジェンキンスプラグインを提供し、sonarqubeビルドを実行することができますので、ジェンキンスCI環境を構成する方法を学びました。Sonarqubeは、プロジェクトは次のような利点があります実行するにはプラグインを使用します
1.あなたが示すように、アイテムは、Sonarqubeプロジェクトではっきりと見ることができます
Sonarqubeの手動で記述する必要はなく、自動選択、プロジェクト名、一目でプロジェクトのバージョンを終了し、開始します。cmdは情報を表示する必要はありません。少し流水线
感じ。
2. Sonarqubeとの統合、下記を参照してください
私たちは、Sonarqubeの使用はプラグインでは、このようなプロジェクトを参照することができ、状態や処理状態sonarqubeサーバ側ジェンキンスページ表示プロジェクトは、我々は自動的にSonarqube Web管理ページに入りますsonarqubeアイコンに関連付けられたグラフをクリックすると、自動的にナビゲートすることができますこのプロジェクトは、例本事業で建設場合に、特に多数は私たちに利便性の多くをもたらしました。
ジェンキンスパイプライン3.統合
上記単に便利な場所ですが、かけがえのないのプラグを示していない、このプラグジェンキンスパイプラインを使用するときに使用しなければならないという点で、かけがえのないです。
ここsonarqubeジェンキンスを設定するには、プラグインをインストールする方法だ、と述べました。
ジェンキンスは、管理インターフェースにプラグイン「利用可能な」インタフェースに切り替えるには、入力sonarQube Scanner
インストール設定の完了後、次いで、取り付けられた(上述プラグジェンキンスを有する前部に搭載され、ここでは繰り返さないことにします)。
ツールオプションの設定
入りますManage Jenkins>Global Tool Configuration
検索sonarqube for msbuild
は次のような構成であります
どこの名前は限り、あなたは簡単に管理できるよう、選択することができます。
検索するには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插件集成单元测试覆盖报告
回忆前面章节,添加sonarqube单元测试覆盖率报告需要额外执行一步运行单元测试的代码,这并不是重点,重点在于如何在Begin Analysis
部分指定单元测试执行文件,这里通过指定Additional arguments
来实现,如下图示
然后再在msbuild构建完成后添加一步执行单元测试的代码(可以复制前面的代码)就行了,这里需要说明的是前面为了方便讲解我们是在项目目录下执行脚本,使用了%CD%
这样的相对路径,Jenkins中建议换成绝对路径,以防出现不必要的麻烦.
完了再进入Sonarqube web管理界面,就可以看到有单元测试覆盖率报告了
Token方式与Sonarqube server交互
上一节我们讲解了通过配置SonarQube.Analysis.xml
方式实现与Sonarqube server交互(实际上我们执行构建的时候sonarqube runner是通过http方式把数据提交到sonarqube server),这样做有非常明显的缺点.第一是安全问题,我们知道其实我们是把admin的用户名和密码写入了SonarQube.Analysis.xml
文件里,这样很容易暴露管理员账户,在企业生产环境中,如果有恶意的人获取了管理员账户,则可以进行任意构建,然后触发布,这样会造成非常严重的后果,即使被没有恶意的开发者获取到,开发者可能出于好奇心在生产环境中进行测试尝试,这样也可能会造成非常严重的后果.第二是管理很不方便,如果在生产环境的jenkins是分布式的,那么我们进入每一台服务器更改配置文件是很不方便的,如果管理员账户和密码更改了还要进入每台服务器更改,虽然现在有各种自动化的工具使得这种操作不是特别麻烦的问题,但是集中的配置更加方便维护.下面我们讲解如何通过在Jenkins中为Sonarqube server添加token
来解决以上两个问题.
在Sonarqube里生成token
まずのみ管理者アカウントがトークンを生成できることに注意する必要があり、他のアカウントはこれを行うことはできません。私たちは、sonarqube Web管理インターフェイスを入力して、次の手順を実行します
マイアカウントの入力した後security
タブを、次のようなインターフェイスを見ることができます
私たちは、[生成]ボタンがアクティブになり、その場合には、テキストボックス赤いボックス内のキーの名前を入力し、私たちはトークンを生成することができますクリックしてください
私たちはをクリックしてcopy
トークンが格納されているか、テキスト文書に直接コピーしたり、他の場所で、そのトークンは、このページを保存し、終了する必要があります注意しなければならないされた後に消えますトークンの値(ここでは手段の消失がもはやむしろ真よりも、表示されていると言うん消失
)。
ジェンキンスレーンに生成されたトークンを追加します。
我々は戻っジェンキンスに行く、入るManage Jenkins>configure system
見つけることSonarQube servers
にトークン貼り付けますServer authentication token
すでに場合は注意が必要で、
SonarQube.Analysis.xml
アカウントのパスワードを設定し、削除する必要があり、次のコードを削除します
<Property Name="sonar.login">admin</Property>
<Property Name="sonar.password">admin</Property>