(1).NET用Jenkinsを立ち上げる¶
最終更新日: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/
.NET環境インストールイメージ作成¶
いつも通りDockerイメージをDockerfileで作っていきます。
解説はPodmanなので、Dockerの方は適宜置き換えてお読みください。
イメージは公式とBitnami版があるが、Bitnami版のほうがカスタムしやすかったのでこっちで。
bitnami/bitnami-docker-jenkins: Bitnami Docker Image for Jenkins
https://github.com/bitnami/bitnami-docker-jenkins
(1):ファイル取得¶
Bitnami版Jenkinsのリポジトリからクローンして取得する。
(2):Dockerfile編集¶
「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.
最終的にはこんな感じ。
長いので折りたたみ(クリックして展開)
(3):ビルド¶
ビルドしてイメージを作成する。
podman build ./ -t jenkins_net:1.0.0
終了後はイメージ一覧コマンドで作成され追加されているか確認する。
動作確認¶
(1):立ち上げ¶
さっと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で設定したやつ。
(2):ジョブ作成¶
ログインすると「プラグインのアップデートしろ」通知があるが、無視してまずは.NETがインストールできたか確認する。
左のメニューから「新規ジョブ作成」を選びジョブ作成ページへ。
ジョブ名を入力し、「パイプライン」を選択したら「OK」でジョブを作成する。
ジョブの設定に関してはすべてすっ飛ばして、パイプラインの定義のみ行う。
右のメニューから「Hello World」を選択しサンプルを呼び出し、8行目に.NETの情報を呼び出すコマンドを追記する。
入力が終わったら「保存」でジョブを保存する。
sh 'dotnet --info'
(3):ビルド実行¶
作成したら左のメニューから「ビルド実行」を選択しビルド実行。
成功するとビルド結果#1が緑色で表示される。
(4):ログ出力確認¶
ビルド結果のページからログを確認し、.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で静的解析&コードカバレッジ集計