More than 3 years have passed since last update.
VisualStudioでビルドしてメール通知するJenkinsの環境をDockerで楽に作る
目的など
- 普段はTeamCityを使っていてJenkinsがどんなものか知りたかったというモチベーションです。
- ビルド → テストとコードチェック → メール配信をします。
- 自分のwindowsでひとまずやって、後できれいに消したいです。
- C++用です。CppUTest, ReSharper。
- ここに晒すことで諸先輩方の指摘を頂けたら嬉しいです。
関連する記事はこちら↓です。
システムの構成
- windows(の中のwsl2)がDockerのホストです。
- DockerコンテナとしてJenkinsを構築します。
- DockerのホストであるwindowsはJenkinsのエージェントを兼任します。
- レポジトリもある。以前の記事の↓を使います。テストコードがあるので。
Dockerのホスト(そしてJenkinsのエージェント)になるwindowsの前提
- Docker Desktop WSL2 バックエンドをインストールしてある。
- Visual Studio(使いたいビルド環境)がインストールしてある。
Jenkinsの起動
公式のdocker imageを使います。
ドキュメントを見るとBlue Oceanプラグインを入れたくなりますが、罠なので避けます。
powershellで以下を実行します。
dockerpulljenkins/jenkins:lts-jdk11dockerコンテナを起動します。データはホスト側に持つようにマウント(-v)します。
ブラウザーからのアクセスとエージェントとの接続のためにポートフォワード(-p)します。
dockerrun-p8080:8080-p50000:50000-vjenkins_home:/var/jenkins_homejenkins/jenkins:lts-jdk11こんなのが出てくるのでパスワードをとっておきます。
***************************************************************************************************************************************************************************************Jenkinsinitialsetupisrequired.Anadminuserhasbeencreatedandapasswordgenerated.Pleaseusethefollowingpasswordtoproceedtoinstallation:「本当はここにパスワードの文字列が入っています。後で使います。」Thismayalsobefoundat:/var/jenkins_home/secrets/initialAdminPassword***************************************************************************************************************************************************************************************ブラウザでコンテナにアクセスします。↓のアドレスをアドレスバーに入力します。
http://localhost:8080
下の画面になるので先ほどのパスワードを入れます。
Install suggested plugins を選びます。
あとは指示通り。
👁 image.png
そのまま。
👁 image.png
(脱線)JDKについて
dockerimageは無印(docker pull jenkins/jenkins)だとサポート期限切れのjdk8になり、jenkins上でも警告が出るのでjdk11を選びました。
ちなみにJDKというとライセンスが気になりますが、このイメージに入っていたのはAdoptOpenJDKだった商用利用も無償で可能です。
バージョン確認の結果です。
$ java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)
エージェントの準備
本題に戻ります。
処理を実行するのがエージェントです。
この画面から始まるのでエージェントを設定します。
👁 image.png
Permanent Agentを選びます。
👁 image.png
executorsはコアのスレッド数に増やして、作業用のフォルダを指定しました。後はデフォルトにしました。
👁 image.png
まだこんな感じなので、さっき作ったwindows11を選びます。
👁 image.png
agent.jarをエージェントでダウンロードします。
ダウンロードしたフォルダに移動し。赤丸のコマンドを実行します。
👁 image.png
こんな風に待機中が並びます。
👁 image.png
今度はmasterのほうを選び、Number of executersを0(つまりエージェントとして動かない)にします。
すると右上にあった警告マークが消えます。
SMTPサーバーの準備
gmailのsmtpを使う手もメジャーですが、
Dockerを使える状況ならcatatnight/postfixを利用するのも楽です。
Windowsに戻りpowershellで以下を実行します。
dockerpullcatatnight/postfixPowerShellの場合はLinuxと違い、改行のエスケープが「`」なのが注意点です。
パラメータはこの例のまま行きます。あとで使います。
dockerrun-d-p25:25`
--namemailserver`
-emaildomain=example.com`
-esmtp_user=username:password`
catatnight/postfixシステムの設定
Jenkinsの管理 > システムの設定
「Jenkinsの位置」で、URLは「ホストのIPアドレス:8080」にします。
システム管理者のメールアドレスは通知が来たときに見てわかるように設定します。
設定保存後に↓のように「リバースプロキシがおかしいようです。」と警告が出るようになると思います。
先ほど設定した「ホストのIPアドレス:8080」でJenkinsにアクセスしなおしてください。
拡張E-mail通知で、「ホストのIPアドレス」、SMTPサーバーに設定したユーザー名、パスワード、ポート(25)を設定します。
高度な設定を開く必要があります。
👁 image.png
他の設定はこんな感じです。
宛先がgmailだと迷惑メールに届きます。
続きはこちら↓です。
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
