[はじめに]
このシリーズは、分析.netcoreプロジェクトの自動化ジェンキンスを統合する方法をsonarqubeインストールと展開に焦点を当てています。次のように内容は以下のとおりです。
- SonarQubeシリーズ、Linuxのインストールと展開
- SonarQubeシリーズ第二には、DOTNETコア/ C#のコードを分析します
- 3のSonarQubeシリーズ、ジェンキンス統合SonarQube(dotnetcore記事)
[]機能の実現
次のようにこの記事の主な内容を紹介します。
- シェルスクリプトに統合sonarqubeコマンドの最後の記事
- ジェンキンスへのシェルスクリプト
[統合] sonarqubeコマンドシェルスクリプト
Linuxサーバを使用しているので、私たちは簡単に呼び出すためにシェルスクリプトに統合sonarqube上の記事に関連するコマンドが続く、と簡単にCI / CDツールに統合されています。
もう一つの利点は、シェルスクリプトは、ジェンキンスあまりにも多くのプラグインにインストールする必要があり、スクリプトを使用して、単一のクリーン・ジェンキンスを保つために呼び出していない、マシンの移行の場合には非常に便利になるということです。
1.統合DOTNETテストコマンド
次のようにひとつのスクリプトにまずDOTNETのテストコマンド、スクリプトは次のとおりです。
#かどうかは、現在のスクリプトの実行 実行 = $ 1 #testプロジェクトフルパス TESTDIR = $ 2 もし [$ {実行} == 偽 ]。その後、 エコー 「7tiny:実行するためには何もありません!」 の出口0 Fiを提供して エコー 「7tiny:テストを開始... 」 #nugetでのテストプロジェクトでパッケージをインストールするには、このメソッドを使用します。DOTNETパッケージcoverlet.msbuildを追加 DOTNET試験$ {TESTDIR} --logger:" TRX;ログファイル名= test.trx " / P:CollectCoverage = 真 / P:CoverletOutputFormat = opencover / P:CoverletOutput = ' ./TestResults/ ' もし [$?!= 0 ]; その後 、出口1 Fiの エコー 「7tiny!:テストが終了しました」 終了0
パラメータ:
- 実行:スクリプトかどうか(ジェンキンスにチェックボックスを結合を促進して、そのようなものが真渡す必要はありません)
- TESTDIR:テストプロジェクトは、アドレスの完全なリストを提出xxxtexst.csproj
2.統合DOTNETのsonarscannerコマンド
#かどうかは、現在のスクリプトの実行 実行 = $ 1 #ソリューション名をビルドするには solutionName = $ 2 #の.slnフルパスを提出 solutionDir = $ 3 もし [$ {実行} == 偽 ]。その後、 エコー 「7tiny:実行するためには何もありません!」 の出口0 Fiを提供して エコー 「7tiny:スキャナを開始... 」 輸出PATH = $ {PATH}:$ {HOME} / DOTNET / ツール DOTNETが開始sonarscanner / $ {solutionName} N:/ kは$ {solutionName} / V:$ {} BUILD_NUMBER もし [$?!= 0 ]; その後 、出口1 Fiの DOTNETのビルド$ {} solutionDir もし [$?!= 0 ]; その後 、出口1 Fiの DOTNETのsonarscannerエンド もし [$?!= 0 ]; その後 、出口1 Fiの エコー 「7tiny!:スキャナが終わっ」 終了0
パラメータ:
- 実行:スクリプトかどうか(ジェンキンスにチェックボックスを結合を促進して、そのようなものが真渡す必要はありません)
- solutionName:ソリューション名を構築するには
- solutionDir:の.slnファイルのフルパス
プロジェクト名sonarqubeなどの溶液のデフォルトのスクリプト名の中に、ジェンキンスさんは活動の数のsonarqubeとしてバージョン番号をコンパイル。
3.サーバへのシェルスクリプトは、ディレクトリ・ジェンキンスにアクセスすることができます
我々は両方のxxx.shellシェルスクリプトとして保存され、ジェンキンスさんは、私がここに持っているような実行は、ロケーションサーバに両方のファイルが保存されます呼び出しを使用するためにサーバを配置されます。
シェル・スクリプト・ジェンキンスに組み込ま[IN]
シェルスクリプトでは、ジェンキンスの統合は非常に簡単だろう、我々は唯一のスクリプトが書かれたシェルコマンドボックスの呼び出しをジェンキンスシェルする必要があり、あなたのアカウントにパラメータを渡すことができます。
例えば:
このプロジェクトは、ジェンキンスに項目の設定を開きます。
その後、ビルドの底面積シェルボックスは、適切なシェルコマンドに入力し実行するには、当然のことながら、私たちのシェルスクリプトを呼び出すことです。
ターンの呼び出しで:
- パッケージ化され、解放さnugetをコンパイルします
- テスト実行
- 実行ソナー缶詰
最初の引数は、各スクリプトは、私たちにスクリプトを実行するために、他のパラメータは順番に渡すことができるかどうかを決定するためのチェックボックスを設定するかどうかです。
チェックボックスのコンフィギュレーションモードでは:
私はここブール・パラメータを設定することを選択し、我々はそれを構築するときに選択するかどうかを決定します。
[分析]ジェンキンスコンパイルされたコードが実行されます
私たちは、このパッケージをnugetのみコード分析を行い、そのチェックボックスのコード分析を選択していません。
点击 Build 然后静候执行的结果,通过 jenkins 的日志,我们可以看出代码分析结果已经成功推送到了 sonarqube。
我们可以打开 sonarqube 的对应项目进行查看:
通过结果我们可以看出,本次构建相对于上次构建的结果,新加的代码的单元测试覆盖达到了百分百,且没有任何代码不规范和漏洞,但是历史的代码还有很多的漏洞需要填补。
【总结】
使用 sonarqube 分析dotnet core/C#代码的全部过程以及集成jenkins已经完成了,通过通用的脚本,我们可以方便地应用到多个项目中。
如有任何疑问,欢迎在评论区讨论~