2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VisualStudioでビルドしてメール通知するJenkinsの環境をDockerで楽に作る

Last updated at Posted at 2021-08-10

目的など

  • 普段は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

下の画面になるので先ほどのパスワードを入れます。

image.png

Install suggested plugins を選びます。

image.png

あとは指示通り。
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で以下を実行します。

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」にします。
システム管理者のメールアドレスは通知が来たときに見てわかるように設定します。

image.png

設定保存後に↓のように「リバースプロキシがおかしいようです。」と警告が出るようになると思います。
先ほど設定した「ホストのIPアドレス:8080」でJenkinsにアクセスしなおしてください。

image.png

拡張E-mail通知で、「ホストのIPアドレス」、SMTPサーバーに設定したユーザー名、パスワード、ポート(25)を設定します。
高度な設定を開く必要があります。
image.png

他の設定はこんな感じです。

image.png

宛先がgmailだと迷惑メールに届きます。

続きはこちら↓です。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?