目的など
- 普段は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で以下を実行します。
docker pull jenkins/jenkins:lts-jdk11
dockerコンテナを起動します。データはホスト側に持つようにマウント(-v)します。
ブラウザーからのアクセスとエージェントとの接続のためにポートフォワード(-p)します。
docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11
こんなのが出てくるのでパスワードをとっておきます。
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
「本当はここにパスワードの文字列が入っています。後で使います。」
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
ブラウザでコンテナにアクセスします。↓のアドレスをアドレスバーに入力します。
http://localhost:8080
下の画面になるので先ほどのパスワードを入れます。
Install suggested plugins を選びます。
(脱線)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)
エージェントの準備
本題に戻ります。
処理を実行するのがエージェントです。
この画面から始まるのでエージェントを設定します。
executorsはコアのスレッド数に増やして、作業用のフォルダを指定しました。後はデフォルトにしました。
まだこんな感じなので、さっき作ったwindows11を選びます。
agent.jarをエージェントでダウンロードします。
ダウンロードしたフォルダに移動し。赤丸のコマンドを実行します。
今度はmasterのほうを選び、Number of executersを0(つまりエージェントとして動かない)にします。
すると右上にあった警告マークが消えます。
SMTPサーバーの準備
gmailのsmtpを使う手もメジャーですが、
Dockerを使える状況ならcatatnight/postfixを利用するのも楽です。
Windowsに戻りpowershellで以下を実行します。
docker pull catatnight/postfix
PowerShellの場合はLinuxと違い、改行のエスケープが「`」なのが注意点です。
パラメータはこの例のまま行きます。あとで使います。
docker run -d -p 25:25 `
--name mailserver `
-e maildomain=example.com `
-e smtp_user=username:password `
catatnight/postfix
システムの設定
Jenkinsの管理 > システムの設定
「Jenkinsの位置」で、URLは「ホストのIPアドレス:8080」にします。
システム管理者のメールアドレスは通知が来たときに見てわかるように設定します。
設定保存後に↓のように「リバースプロキシがおかしいようです。」と警告が出るようになると思います。
先ほど設定した「ホストのIPアドレス:8080」でJenkinsにアクセスしなおしてください。
拡張E-mail通知で、「ホストのIPアドレス」、SMTPサーバーに設定したユーザー名、パスワード、ポート(25)を設定します。
高度な設定を開く必要があります。
他の設定はこんな感じです。
宛先がgmailだと迷惑メールに届きます。
続きはこちら↓です。