Docker を使って Jenkins サーバーをローカルに構築する (プラグイン導入済み)
Jenkins on Docker
最近では Jenkins サーバーを Docker 上で構築するケースが増えてきています。CI 環境は、簡単に作り直したり複製したりすることができる Docker のメリットを活かせる環境であると言えます。
ということで、Docker を使って Jenkins サーバーをローカルに構築する方法をご紹介したいと思います。また Jenkins にはプラグインをインストールして使うことが多いと思うので、プラグインがインストール済みの Docker イメージをビルドする方法も併せてご紹介します。
Docker のインストール
まずはローカルに Docker が実行できる環境を作りましょう。以下のドキュメントを参考にしてください。Mac では Docker Toolbox をインストールする方法と Docker for Mac をインストールする方法の2通りがあります。
Docker イメージのビルド
Jenkins 公式の Docker イメージがいくつか公開されており、その中の jenkinsci/jenkins を使うと非常に簡単に構築することができます。これを元にしながら、プラグインを導入するところを Dockerfile に書きます。
FROM jenkinsci/jenkins:2.11 # install via apt USER root # install jenkins plugins COPY plugins.txt /usr/share/jenkins/plugins.txt RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt # drop back to the regular jenkins user - good practice USER jenkins
インストールしたいプラグインは plugins.txt
にまとめておき、Dockerfile
と同じディレクトリに置いておきます。ここでは、Android アプリの CI に必要そうなプラグインをいくつか入れています。なお、インストールしたいプラグインが他のプラグインに依存している場合、そのプラグインも記述する必要があります。
javadoc 1.4 dashboard-view 2.9.10 analysis-core 1.78 matrix-project 1.7.1 token-macro 1.12.1 maven-plugin 2.13 android-lint 2.3 aws-device-farm 1.13 checkstyle 3.46
ここまで出来たら docker build
コマンドで Docker イメージをビルドします。
$ docker build -t jenkins-master . Sending build context to Docker daemon 279.2 MB Step 1 : FROM jenkinsci/jenkins:2.11 2.11: Pulling from jenkinsci/jenkins ...省略... Digest: sha256:c4c04de0e9341fa477752923ec94014d28a13254bebe49fcefd4098e71e8344f Status: Downloaded newer image for jenkinsci/jenkins:2.11 ---> fb476c24b4d7 Step 2 : USER root ---> Running in 03da3f79976c ---> 40691b3404a4 Step 3 : COPY plugins.txt /usr/share/jenkins/plugins.txt ---> 2e4ffac862ff Removing intermediate container f27e39712071 Step 4 : RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt ---> Running in 9d971d474e58 Analyzing war: /usr/share/jenkins/jenkins.war Downloading javadoc:1.0 Downloading dashboard-view:2.9.10 Downloading analysis-core:1.78 Downloading matrix-project:1.7.1 Downloading token-macro:1.12.1 Downloading maven-plugin:2.9 Downloading android-lint:2.3 Downloading aws-device-farm:1.13 Downloading checkstyle:3.46 --------------------------------------------------- INFO: Successfully installed 9 plugins. --------------------------------------------------- ---> 463dbb2b92ad Removing intermediate container 9d971d474e58 Step 5 : USER jenkins ---> Running in 70729142c3fa ---> 9a48ce137609 Removing intermediate container 70729142c3fa Successfully built 9a48ce137609
Docker コンテナの起動
次に、ビルドした Docker イメージを元に Docker コンテナを起動しましょう。Jenkins の設定やジョブ設定を永続化するため、-v
オプションを使って Data Volume をマウントしています。
$ docker run -p 8080:8080 -p 50000:50000 \ -v `pwd`/jenkins_home:/var/jenkins_home -d jenkins-master
Jenkins の起動
Docker コンテナが起動できたら、ブラウザでアクセスしてみます。
$ open http://$(docker-machine ip):8080
Jenkins 2.0 からは、Initial Admin Password が必要になります。
これは /var/jenkins_home/secrets/initialAdminPassword
にあります。/var/jenkins_home
は -v
オプションを使って Data Volume をマウントしているので、マウントしているディレクトリを開くと参照できます。
$ cat `pwd`/jenkins_home/secrets/initialAdminPassword e45cf4e679114e738710a30efded90c0
Jenkins 2.0 では初期設定でプラグインをインストールできます。ここでは「Install suggesed plugins」を選択します。
プラグインのインストールが進みます。
インストールが終わったら、管理者のアカウントを作成します。
Jenkins を利用する準備が整いました。
いつもの Jenkins の画面が表示されます。
インストール済みのプラグイン一覧を見てみると plugins.txt
で指定したプラグインがインストール済みであることが確認できます。
以上です!お疲れさまでした。
まとめ
Jenkins on Docker の事始め的な内容でした。本記事ではローカルで構築しただけなので、ECS などにデプロイするにはもう少し設定が必要です。これはまた別の機会にご紹介したいと思います。