最終更新日:2022/05/15
第一部、Jenkinsおじさんを仲間にする。
このページは「Jenkinsで.NET用環境構築を作る」の第一部です。
(1).NET用Jenkinsを立ち上げる←イマココ!
(2)Giteaからソースを取得してビルド&テスト
(3)SonarQubeで静的解析&コードカバレッジ集計
第一部ではLinux向けJenkinsに.NET 5用のツールを入れて、Docker上に立ち上げるところまで解説します。
「もうJenkinsも知ってるし、ソースもあるから環境だけ作れればいいぜ!」って方はこの部で終わりです!
Jenkinsについては、Jenkins自体がどのようなものかと、簡単なジョブを作れる程度の知識が必要です。
一応流れは説明しますが、詳しい解説はないので、各自調べるか勉強してください!
ちなみに、これからやることはAzure DevOpsで大体できるらしいですよ・・・(未確認)
Azure DevOps Services | Microsoft Azure
https://azure.microsoft.com/ja-jp/services/devops/
いつも通りDockerイメージをDockerfileで作っていきます。
解説はPodmanなので、Dockerの方は適宜置き換えてお読みください。
イメージは公式とBitnami版があるが、Bitnami版のほうがカスタムしやすかったのでこっちで。
bitnami/bitnami-docker-jenkins: Bitnami Docker Image for Jenkins
https://github.com/bitnami/bitnami-docker-jenkins
Bitnami版Jenkinsのリポジトリからクローンして取得する。
「2/debian-10」フォルダに移動し、「Dockerfile」をエディタで開く。
今回追加するのは5点。
まずは「wget」を追加でインストール。
「install_packages 」の最後に追記する。
# Install required system packages and dependencies
RUN install_packages (長いので中略) wget
次に.NET用の環境変数を設定する。
「DOTNET_CLI_HOME」は.NETの作業フォルダ的なもの、これを設定しないとビルド時にエラーになる。
「PATH」には追加する.NETツールを使用するためのパスを追加。
「HOME」は色々あって固定、作業フォルダなので別のフォルダでも可能。
「SONAR_USER_HOME」は第三部で使用する「SonarQube」用、第三部までいかないなら不要。
# .NET Environment
ENV DOTNET_CLI_HOME="/home/dotnet" \
PATH="/home/dotnet/.dotnet/tools:$PATH" \
HOME="/home/dotnet" \
SONAR_USER_HOME="/home/dotnet"
RUN mkdir /home/dotnet
その次は.NET SDKをインストールさせる。
公式の手順をそのまま追加。
Debian に .NET をインストールする - .NET | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/core/install/linux-debian
# Install .NET SDK
RUN wget https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
RUN dpkg -i packages-microsoft-prod.deb
RUN rm packages-microsoft-prod.deb
RUN apt-get update && apt-get install -y apt-transport-https
RUN apt-get update && apt-get install -y dotnet-sdk-5.0
第三部で使用する「SonarQube」用のツールもインストールする。
第三部までいかないなら不要なのでパスしていい。
どちらにせよ作業フォルダに権限を付与しておく。
# Install .NET Tools
RUN dotnet tool install --global dotnet-sonarscanner
RUN dotnet tool install --global dotnet-reportgenerator-globaltool
RUN chmod 777 -R /home/dotnet
最後に.NETのロックファイルを削除させる。
削除しないと結構な確率でJenkinsでのビルドが失敗する。
# Remove .NET Lock
RUN rm -r /tmp/NuGetScratch/lock/
もし下記のようなのエラーが出た場合は、このロックファイルを削除する必要がある。
/usr/share/dotnet/sdk/5.0.407/NuGet.targets(565,5): error :
Unable to obtain lock file access on '/tmp/NuGetScratch/lock/aae88f3c14dc199495b9493acae97ac082428280' for operations on '/home/dotnet/.nuget/NuGet/NuGet.Config'.
This may mean that a different user or administrator is holding this lock and that this process does not have permission to access it.
If no other process is currently performing an operation on this file it may mean that an earlier NuGet process crashed and left an inaccessible lock file, in this case removing the file '/tmp/NuGetScratch/lock/aae88f3c14dc199495b9493acae97ac082428280' will allow NuGet to continue.
最終的にはこんな感じ。
長いので折りたたみ(クリックして展開)
ビルドしてイメージを作成する。
podman build ./ -t jenkins_net:1.0.0
終了後はイメージ一覧コマンドで作成され追加されているか確認する。
さっとdocker-compose.ymlファイルを作って立ち上げましょう。
version: '3.8'
services:
jenkins:
image: localhost/jenkins_net:1.0.0
container_name: jenkins_cont
ports:
- '8080:8080'
- '50000:50000'
environment:
- JENKINS_USERNAME=user
- JENKINS_PASSWORD=bitnami
volumes:
- 'jenkins_data:/bitnami/jenkins'
volumes:
jenkins_data:
driver: local
「http://(IPアドレス):8080」にアクセスしてログインページが表示されたら立ち上げは成功。
アカウント名とパスワードはdocker-compose.ymlで設定したやつ。
ログインすると「プラグインのアップデートしろ」通知があるが、無視してまずは.NETがインストールできたか確認する。
左のメニューから「新規ジョブ作成」を選びジョブ作成ページへ。
ジョブ名を入力し、「パイプライン」を選択したら「OK」でジョブを作成する。
ジョブの設定に関してはすべてすっ飛ばして、パイプラインの定義のみ行う。
右のメニューから「Hello World」を選択しサンプルを呼び出し、8行目に.NETの情報を呼び出すコマンドを追記する。
入力が終わったら「保存」でジョブを保存する。
sh 'dotnet --info'
作成したら左のメニューから「ビルド実行」を選択しビルド実行。
成功するとビルド結果#1が緑色で表示される。
ビルド結果のページからログを確認し、.NETが使えるか確認する。
ビルド結果には赤枠のリンクからビルド結果ページに飛んでいける。
左のメニューから「Console Output」を選択し、ビルド時のログ出力を確認する。
.NETの情報がログに出力されていれば無事に環境構築は無事完了!
+ dotnet --info
.NET SDK (reflecting any global.json):
Version: 5.0.407
Commit: 1a1785612e
(以下略)
これでJenkinsに.NET環境を入れる作業は終わりです。
これも.NETが様々なプラットフォームで動かせるようになったおかげです、サンキューMS!
次は実際にソースを取得してビルドと単体テストをします、お楽しみに!
(1).NET用Jenkinsを立ち上げる←イマココ!
(2)Giteaからソースを取得してビルド&テスト
(3)SonarQubeで静的解析&コードカバレッジ集計
最終更新日:2022/05/15
第二部、Jenkinsおじさんにパシらせる。
このページは「Jenkinsで.NET用環境構築を作る」の第二部です。
(1).NET用Jenkinsを立ち上げる
(2)Giteaからソースを取得してビルド&テスト←イマココ!
(3)SonarQubeで静的解析&コードカバレッジ集計
第二部ではGitからソースを取得するように指示し、取得したソースをビルドできるようにします。
この解説ではGiteaを使い、最終的にはWebhookを通してプッシュ時に自動的にビルドするように構築していきます。
もし自動ビルドが不要な場合は、通常のGitでも可能です。(ソース引っ張ってくるだけなので)
Giteaについてはこちら(大した解説ないのでググって調べたほうが早い)
→サーバー/Gitea
まずは前回のdocker-compose.ymlにGiteaを追加する。
Giteaの環境設定で「GITEA__webhook__ALLOWED_HOST_LIST=*」を追加している。
これはWebhookの呼び出しホストの設定で、すべてのホストを許可にしている。
ローカルや閉じたネットワークの場合はこれでいいが、もし外部に公開されているネットワークの場合は確認すること。
Config Cheat Sheet - Docs
https://docs.gitea.io/en-us/config-cheat-sheet/
version: '3.8'
services:
jenkins:
image: localhost/jenkins_net:1.0.0
container_name: jenkins_cont
ports:
- '8080:8080'
- '50000:50000'
environment:
- JENKINS_USERNAME=user
- JENKINS_PASSWORD=bitnami
volumes:
- 'jenkins_data:/bitnami/jenkins'
# ★Giteaを追加!
gitea:
image: gitea/gitea:1.16
container_name: gitea_cont
ports:
- "3000:3000"
- "3022:22"
environment:
- GITEA__webhook__ALLOWED_HOST_LIST=*
volumes:
- gitea_data:/data
volumes:
jenkins_data:
driver: local
gitea_data:
driver: local
「http://(IPアドレス):3000」にアクセスして初期設定ページが表示されたら立ち上げは成功。
設定としては「サーバードメイン」と「GiteaのベースURL」をアクセスしたIPアドレスに設定するぐらい、他はデフォルト。
最後に「Giteaをインストール」を選択してインストールする。
インストール後は下記のページが表示されるので、赤枠の新規アカウント登録をする。
最初に登録したアカウントが管理者となる。
ここはリポジトリを作ってソースをアップするだけなので、知ってる人はパスしていい。
ユーザーページの赤枠のところからリポジトリを新規作成する。
リポジトリ名はなんでもヨシ!
「リポジトリを作成」を選択してリポジトリを作成する。
リポジトリ作成完了、ここに確認用のソースを追加する。
追加方法は各自に任せるが、確認用のソースは例として「WindowsFormsで遊戯王を交えながらMVVMっぽく作って単体テストもやってみる」で作ったものを置いておきます。
[DL] RunRunGridLiner-develop.zip
最後にJenkinsファイルをリポジトリのルートに追加する、ファイル名は「Jenkinsfile」(拡張子なし)となる。
中身は前回.NETの環境確認に使用したもの、後々これにビルドの指示を記載していく。
pipeline {
agent any
stages {
stage('Hello') {
steps {
echo 'Hello World'
sh 'dotnet --info'
}
}
}
}
ここからはJenkinsに先程のリポジトリからソースを取得するように指示していきます。
ジョブ作成でパイプラインのジョブを作成する。
ジョブの設定でパイプラインを先程のリポジトリに合わせていく
「定義」を「Pipeline script from SCM」に変更、すると画像のようにSCMを設定できるようになる。
「SCM」は「Git」を選択、「リポジトリURL」に先ほど作成したリポジトリを入力する。
今回ソースの取得のみなので認証情報は未設定でOK、もしプライベートリポジトリにしてたら必要かも?
「ビルドするブランチ」は変更していなければ「*/master」のままでOK。
入力が終わったら「保存」を選択してジョブを作成する。
作成したら左のメニューから「ビルド実行」を選択しビルド実行。
成功するとビルド結果#1が緑色で表示される。
ビルド結果のページから、ビルド時のログ出力を確認する。
先ほど作成したリポジトリからのチェックアウトと、Jenkinsfileの中身が実行されていることが確認できる。
無事にリポジトリからソースを取得できたので、実際に.NETのビルドをJenkinsファイルに記述していく。
ここではLinux上でビルドするため、Windowsのコンポーネント(WindowsFormsとか)を含むビルドはエラーになるので注意。
もしWindows上でJenkinsを構築しているならビルドできる・・・はず!
先程のJenkinsファイルにクリーンとビルドとテストのステージを追加する。
最初にクリーンを行い、.NET Coreのプロジェクト(RunRunGridLinerCore)をビルドし、それのテストプロジェクト(RunRunGridLinerCore_Test)の単体テストを実行するようにしている。
「Clean」ステージでは今回の対象のプロジェクトのクリーン。
「Build」ステージでは.NET Coreのプロジェクトのビルド。
「Test」ステージではテストプロジェクトのテスト実行。
pipeline {
agent any
stages {
stage('Hello') {
steps {
echo 'Hello World'
sh 'dotnet --info'
}
}
stage('Clean') {
steps {
echo 'Clean'
sh 'dotnet clean ./RunRunGridLinerCore/'
sh 'dotnet clean ./RunRunGridLinerCore_Test/'
}
}
stage('Build') {
steps {
echo 'Build'
sh 'dotnet build ./RunRunGridLinerCore/'
}
}
stage('Test') {
steps {
echo 'Test'
sh 'dotnet test ./RunRunGridLinerCore_Test/'
}
}
}
}
それぞれのステージのdotnetコマンドでプロジェクトを指定しているが、これは他のプロジェクトにこの環境ではビルドできないプロジェクトが含まれているため。
プロジェクトを指定しないとソリューション全体でのクリーンやビルドになり、エラーが発生してジョブが途中で止まってしまう。
Jenkinsファイルの編集が終わったらリポジトリにプッシュしておく。
Jenkinsに戻り、再度ジョブの左のメニューから「ビルド実行」を選択しビルド実行。
成功すると、.NETビルド用に追加したステージ「Clean」「Build」「Test」が追加されているのがわかる。
ビルドやテストでエラーになった場合は、失敗したステージでエラーとなり赤く表示される。
ビルドエラーになるソース上げるな!
出力ログにもビルドやテストのログが出力されている、特にエラーなくビルドとテストが実行されていれば無事完了!
エラー時もこのログに表示されるので、何か問題があった場合はここを見ること。
ここではGiteaのWebhookを使い、Jenkinsがそれを検知して自動ビルドするようにしていきます。
「Jenkinsの管理」から管理ページに移り、「プラグインの管理」を選択する。
真ん中の「利用可能」を選択すると、利用できるプラグインの一覧が表示されるので、右上の検索窓に「gitea」と入力。
するとGiteaプラグインが表示されるので、チェックしてインストールする。
インストール後は再度「Jenkinsの管理」から管理ページに移り、今度は「システムの設定」を選択する。
スクロールしていくと先程追加したGiteaプラグインの項目が追加されているので、そこに立てたGiteaのアドレスを入力する。
正しいアドレスが入力されるとすぐ下に実行中のGiteaのバージョンが表示される。
入力が終わったら保存する。
Giteaの方に戻り、リポジトリの「設定」から「Webhook」を選択する。
Webhookの設定ページになるので、右の「Webhookを追加」から「Gitea」を選択しWebhookを追加する。
「ターゲットURL」には「http://(Jenkinsアドレス)/gitea-webhook/post?job=(対象ジョブ名)」と入力する。
Jenkinsアドレスが「192.168.11.10:8080」、対象ジョブ名が「TestJob2」の場合は、「http://192.168.11.10:8080/gitea-webhook/post?job=TestJob2」となる。
「トリガー」の項目ではどのイベントでWebhookを通知するかタイミングを選択できる。
今回はデフォルトの「プッシュのイベント」のままで進める。
入力が終わったら下の「Webhookを追加」で追加する。
その後、追加したWebhookのページに飛び、「テスト配信」を選択して疎通確認を行う。
成功すれば問題ないが、失敗した場合はJenkinsのGiteaプラグインの確認や、入力したURLを再度チェックする。
Giteaの方の設定が終わったので、Jenkinsのジョブの設定を行う。
と言っても簡単で、ジョブの設定で「SCMをポーリング」をオンにする。
ポーリングによる自動ビルドは、一度手動でビルドしてからじゃないとポーリング状態にならないので注意。
あとはリポジトリに適当にプッシュするだけ。
Jenkinsのジョブのページを開いていれば、自動的にビルドしてくれるところが見れるぞ!失敗したときは悲しいけどね!
ポーリングしているかどうかは「Gitのポーリングログ」で見ることができる。
これでGiteaからソースを取得してビルドできるようになりました。
自動でビルドや単体テストまでしてくれると助かりますね、サンキューJenkinsおじさん!
最後はソースを静的解析してガバ具合を確認していきます、お楽しみに!
(1).NET用Jenkinsを立ち上げる
(2)Giteaからソースを取得してビルド&テスト←イマココ!
(3)SonarQubeで静的解析&コードカバレッジ集計
最終更新日:2022/05/15
第三部、Jenkinsおじさんは疲れたので特に何もしない。
このページは「Jenkinsで.NET用環境構築を作る」の第三部です。
(1).NET用Jenkinsを立ち上げる
(2)Giteaからソースを取得してビルド&テスト
(3)SonarQubeで静的解析&コードカバレッジ集計←イマココ!
第三部ではSonarQubeを使ってソースの静的解析を行い、ついでに単体テストのコードカバレッジも集計していきます。
SonarQube自体はC#以外にも色んな言語に対応しているので、覚えておくとソースのクオリティが上がります(多分)
SonarQubeとはコードを静的解析し、品質やセキュリティを保つ素晴らしいツール。
オープンソースであり無料で使え、JenkinsやGitHubなど、他のプラットフォームとの連携も可能。
有償プランもあり、対応言語とかレポートの出力とか追加される。
Code Quality and Code Security | SonarQube
https://www.sonarqube.org/
SonarQube Documentation | SonarQube Docs
https://docs.sonarqube.org/latest/
Dockerで立ち上げる前に、プロセスが使用可能なメモリマップ領域を確認する、下記のコマンドで確認可能。
低すぎるとSonarQubeが動かない可能性があるため、最大値を上げる。
sysctl vm.max_map_count
設定方法は2種類、手っ取り早いのは以下、ただし再起動すると元に戻る。
sysctl -w vm.max_map_count=524288
もう1つは直接「/etc/sysctl.conf」を編集する、こちらは再起動しても設定した値になる。
下記の設定を書き込むだけ、編集方法は任せる!
vm.max_map_count=524288
これらはLinuxの場合のみ、Windowsは・・・知らんw
前回のdocker-compose.ymlにSonarQubeと、SonarQube用のPostgresを追加する。
特に追加の環境設定はなし。
version: '3.8'
services:
jenkins:
image: localhost/bitnami_jenkins_net:2.0.0
container_name: jenkins_cont
ports:
- '8080:8080'
- '50000:50000'
environment:
- JENKINS_USERNAME=user
- JENKINS_PASSWORD=bitnami
volumes:
- 'jenkins_data:/bitnami/jenkins'
gitea:
image: gitea/gitea:latest
container_name: gitea_cont
ports:
- "3000:3000"
- "3022:22"
environment:
- GITEA__webhook__ALLOWED_HOST_LIST=*
volumes:
- gitea_data:/data
# ★SonarQube用Postgresを追加!
postgres:
container_name: postgres_cont
image: postgres:13.4-alpine
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
volumes:
- postgres_data:/var/lib/postgresql/data
# ★SonarQubeを追加!
sonarqube:
container_name: sonarqube_cont
image: sonarqube:community
depends_on:
- postgres
environment:
SONAR_JDBC_URL: jdbc:postgresql://postgres:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
volumes:
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_logs:/opt/sonarqube/logs
ports:
- "9000:9000"
volumes:
jenkins_data:
driver: local
gitea_data:
driver: local
postgres_data:
driver: local
sonarqube_data:
driver: local
sonarqube_extensions:
driver: local
sonarqube_logs:
driver: local
「http://(IPアドレス):9000」にアクセスしてログインページが表示されたら立ち上げは成功。
立ち上げに時間がかかるので、紅茶でも飲んで少し待つこと。
初期IDとパスワードは「admin」で、初回ログイン後にパスワードの再設定をする。
ログイン後のページ、ここで後ほどプロジェクトを作成する。
SonarQubeはプロジェクト単位で静的解析とかを行う。
今回は前回の.NET Coreのソースを利用するので、C#のプロジェクトを作成していく。
手動で行うので「Manually」を選択。
プロジェクト作成ページでは、プロジェクト名とプロジェクトキーを入力する。
ここでは「TestCS」とする。
入力後「SetUp」を選択して次へ。
ここでは解析するリポジトリを選択する。
「Jenkins」があるがこれは罠で、下の「Locally」を選択する。
解析プロジェクトページではまずはアクセス用のトークンを生成する。
適当に入力してトークンを生成、これは後で使うのでメモっておく。
生成したら「Continue」で次へ。
次へと言ったが、ここは実はただの解説ページなので飛ばしていい。
一応説明すると今回は.NET Coreが対象なので、ビルド対象を「.NET」、ビルドツールを「.NET Core」と選択すると、その使い方が表示される。
これでSonarQubeでの作業は終わり。
Jenkinsのプラグイン管理のページで、右上の検索窓に「sonarqube」と入力。
するとSonarqubeプラグインが表示されるので、チェックしてインストールする。
インストール後、システム設定のページにSonarQubeのプラグインの項目が追加されているので、そこに立てたSonarQubeのアドレスを入力する。
「Name」は何入力してもいいが、後で使用するのでメモしておく。
その後、先程生成したアクセストークンの認証情報を追加するので、下の追加を選択する。
認証情報追加ダイアログが表示されるので、種類の「Sercret Text」を選択し、「Sercret」にアクセストークンをコピペする。
「ID」はJenkins内での識別用ID、「説明」はその認証情報の説明なので分かりやすいものを入力しておく。
終わったら「追加」を選択し、追加した認証情報を選択して保存する。
SonarQubeプラグインの設定が終わったら、次はそれを使用するためにJenkinsファイルを編集する。
SonarQube用の環境変数を呼び出す「withSonarQubeEnv」を追加し、その中で第一部で.NET用Jenkins構築時に追加したツールを呼び出す。
「withSonarQubeEnv」のパラメータは、SonarQubeサーバーを追加した時に「Name」に入力した名称を設定する。
ツール「SonarScanner」の使い方は簡単で、「begin」~「end」の間にビルドとテストをするだけ。
「begin」のパラメータ「/k」には、SonarQubeで作成したプロジェクト名を設定する。
ツール「ReportGenerator」は、レポートを生成するツール。
ここでは単体テスト時にコードカバレッジレポートを出力し、このツールでSonarQube用に変換している。
stage('SonerQube') {
steps {
withSonarQubeEnv('SonarQube') {
echo 'SonerQube'
sh 'dotnet sonarscanner begin /k:"TestCS" /d:sonar.coverageReportPaths="./SonarQubeCoverage/SonarQube.xml"'
sh 'dotnet build ./RunRunGridLinerCore/'
sh 'dotnet test ./RunRunGridLinerCore_Test/ --collect:"XPlat Code Coverage"'
sh 'reportgenerator -reports:"RunRunGridLinerCore_Test/TestResults/*/coverage.cobertura.xml" -targetdir:"./SonarQubeCoverage" -reporttypes:"SonarQube"'
sh 'dotnet sonarscanner end'
}
}
}
最終的にはこんな感じ。
Jenkinsファイルの編集が終わったらリポジトリにアップする。
pipeline {
agent any
stages {
stage('Hello') {
steps {
echo 'Hello World'
sh 'dotnet --info'
}
}
stage('Clean') {
steps {
echo 'Clean'
sh 'dotnet clean ./RunRunGridLinerCore/'
sh 'dotnet clean ./RunRunGridLinerCore_Test/'
}
}
stage('Build') {
steps {
echo 'Build'
sh 'dotnet build ./RunRunGridLinerCore/'
}
}
stage('Test') {
steps {
echo 'Test'
sh 'dotnet test ./RunRunGridLinerCore_Test/'
}
}
stage('SonerQube') {
steps {
withSonarQubeEnv('SonarQube') {
echo 'SonerQube'
sh 'dotnet sonarscanner begin /k:"TestCS" /d:sonar.coverageReportPaths="./SonarQubeCoverage/SonarQube.xml"'
sh 'dotnet build ./RunRunGridLinerCore/'
sh 'dotnet test ./RunRunGridLinerCore_Test/ --collect:"XPlat Code Coverage"'
sh 'reportgenerator -reports:"RunRunGridLinerCore_Test/TestResults/*/coverage.cobertura.xml" -targetdir:"./SonarQubeCoverage" -reporttypes:"SonarQube"'
sh 'dotnet sonarscanner end'
}
}
}
}
}
「SonarScanner」の詳しい使い方は↓の公式へ!
SonarScanner for .NET | SonarQube Docs
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-msbuild/
「ReportGenerator」の詳しい使い方は↓の公式へ!
単体テストにコードカバレッジを使用する - .NET | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/core/testing/unit-testing-code-coverage?tabs=windows
Jenkinsに戻り、ジョブの左のメニューから「ビルド実行」を選択しビルド実行。
前回から続きであれば自動ビルドが走るはず。
少し時間がかかるので、紅茶飲みながらクッキーでも食べて待つこと。
成功すると、SonarQube用に追加したステージ「SonarQube」が追加される。
また、左のメニューにSonarQubeの該当のプロジェクトへのリンクが追加されている。
SonarQubeの作成したプロジェクトを見てみると、先程の静的解析の結果が反映されている。
「Pass」と出てるので、多分良い結果なはずw
「Issues」のページに詳細が出ており、ここでどのコードを直せばいいか確認できる。
「Measures」のページではコードカバレッジの結果が出ており、単体テストでどれぐらいコードをカバーしたか確認できる。
他にはセキュリティに関する関するページなどもあるので、ヤバそうなコードがあったらここに表示されると思う。
これでSonarQubeで静的解析とコードカバレッジ集計ができました。
昨今色々なツールがありますが、ローカルな環境で静的解析できるのは便利だと思いました。
以上で「Jenkinsで.NET用環境構築を作る」は終わりです。
Jenkinsは遊び甲斐があるので、これからも解説は増やしていきたいですね!
(1).NET用Jenkinsを立ち上げる
(2)Giteaからソースを取得してビルド&テスト
(3)SonarQubeで静的解析&コードカバレッジ集計←イマココ!
最終更新日:2022/05/15
歴史ある自動化サーバー
◆Jenkinsとは
未作成、そのうち作る(~_~)
大長編3部作です!
◆(1).NET用Jenkinsを立ち上げる
Docker上に.NET用Jenkinsを構築しよう!
◆(2)Giteaからソースを取得してビルド&テスト
Webhookで連携させて自動化させよう!
◆(3)SonarQubeで静的解析&コードカバレッジ集計
自分のソースのガバガバ具合を確認しよう!
コンテンツ一覧へ戻る