DockerでJenkins環境を構築&実践【実践記録13】

実践記録13

一度触れてみたかったJenkinsに挑戦してみたいと思います。
環境は前回まででも使用したDockerを使ってさくっと準備していきます。

DockerでJenkins環境の構築

DockerHub上にJenkinsのイメージが配布されているので、
環境構築はとても簡単です。

以下が公式イメージの説明サイトです。

DockerHub

そしてここでいきなりにして最大の落とし穴です。
上記のリンクから進んで頂ければ問題ありませんが、直接DockerHubから検索される方もいらっしゃると思うので記載しておきます。

DockerHubで「Jenkins」と検索すると上記の画面が当記事執筆時点では表示されますが、
一番上のOFFICIAL IMAGEではなく、上から2番目のイメージを使用してください。

中身を見ると書いてありますが、OFFICIAL IMAGEの方は「DEPRECATION NOTICE(=廃止通知)」が出ているようです。
ちなみにこれを使うと後々以下の様になります。
※なぜこの画面を持っているかは、、、笑

以下のコマンドでイメージファイルの取得を行います。
※末尾を単純に「jenkins」とだけすると廃止されている公式イメージがpullされてしまいます。

docker pull jenkins/jenkins

コンテナを起動させる前に、以下のコマンドでJenkinsのボリューム用ディレクトリを作成しておきます。

mkdir /vagrant_data/jenkins

場所はどこでもよいですが、私は上記のvagrant_dataフォルダをホストOS(Dockerのホストではなく、Docker導入仮想マシンのホスト)
とマッピングさせているのでここにしました。

準備ができたところで以下のコマンドでJenkinsコンテナを起動させます。
※ポート番号はホスト側は適当に8000にしています。

docker run -p 8000:8080 -p 50000:50000 -v /vagrant_data/jenkins:/var/jenkins_home jenkins/jenkins
途中で以下の様な画面が出てきたら赤枠の部分の文字列を控えておいてください。後で管理画面にアクセスする際に必要となります。
※最近エンジニアらしさを求めてコマンドプロンプトの文字の色を変えてみました!笑

もし控え忘れてしまった場合や-dオプションを付けてバックグラウンドで実行した場合も、
Jenkinsコンテナに入って(またはマウントしたボリューム配下の)以下のファイルを確認すればOKです。

/var/jenkins_home/secrets/initialAdminPassword

上記の様に「run: Jenkins is fully up and running」が表示されたらOKです。

http://<IPアドレス>:<ポート番号>でアクセスすると以下の様な画面が表示されます。

先ほどメモしたパスワードを入力したら以下の画面が出てくるはずです。

他の方のJenkinsコンテナの記事を拝見すると、パスワード入力後にプラグインのインストール画面が出てくるようですが
私の場合は出てきませんでした。

プラグインマネージャーを確認すると以下の様に既にいくつかインストールされているようなので、
当記事執筆時点の最新コンテナイメージでは最初からプレインストールされるようになったのかもしれませんね。

Jenkinsを使ってみる

せっかく環境構築したので簡単なジョブを動かしてみたいと思います。
まずは画面左の新規ジョブ作成をクリックします。

続いてアイテム名を記載して、今回は「フリースタイルプロジェクトのビルド」を選択してOKをクリックします。

色々と設定できるようですが、ビルドタブからビルド手順の追加を選択し、
シェルの実行を押してみます。

以下の様に単純なechoコマンドを記載しました。

その後保存ボタンを押下してトップ画面に戻ると以下の様にジョブが作成されていることが分かります。

同じ手順でもう一つ「NasuSample」という名前でechoするジョブも追加します。

再度「新規ジョブ作成」を選択し、今度は「パイプライン」を選択します。

とりあえず見よう見まねで作成した二つのジョブを順番に実行するようにしてみます。

※上記の定義内容は誤っております、正しい定義内容は後ほど記載します。

ここまでくれば後は実行するだけです。
トップ画面から作成したSamplePipeLineからビルドの実行を行います。

嵐マークになりました、どうやら失敗したようです(笑)

気を取り直して、きちんと調べて以下の様にパイプライン定義を修正しました。

再度実行すると今度は上手くいったようです。
Sは直近の実行結果で青は成功、赤は失敗を表しています。

Wはここ数回の実行結果を踏まえた状況を天気で表してくれるようです。
CuriSampleとNasuSampleはSamplePipeLineから呼ばれてこけずに成功したので晴れマークですが、SamplePipeLineについては先ほど失敗もしているので少し曇りが残っています。

また以下の様にステージごとにどれくらい時間がかかったのか等を視覚的に見ることもできるようです。
というかechoだけなのに10秒近くかかるんですね。。。

環境構築から簡単なジョブ実行まで実施できたところで、
今回はここまでにします。