継続的インテグレーションツール「Jenkins」の構築
「継続的インテグレーション(CI)」とは、アプリケーション開発における次のような工程を、繰り返し行う開発スタイルのことです。
- アプリケーションのコーディング
- アプリケーションのコンパイル
- アプリケーションのテスト
- 実行環境へのデプロイ
Jenkinsはこれらの工程の自動化をサポートするツールです。ビルドやデプロイなどの作業を自動化することで、開発生産性が向上します。また、テストやコードの構文解析チェックを自動で行うことで、アプリケーションの品質を向上させることができます。ここでは業務システム開発で広く利用されているCIツールである、Jenkinsの環境構築手順を説明します。
Jenkinsとは
多くのプロジェクトで利用実績があるJenkinsはオープンソースの継続的インテグレーションツール(CI)ツールで、初版は2011年にリリースされ、最新版は1.6です。
Jenkins はJavaで実装されていて、Apache TomcatなどのServletコンテナで動作するWebアプリケーションです。CVS、Subversion、Gitなどのバージョン管理ツールに対応しています。また、Java用のプロジェクト管理ツールである、Apache AntやApache MavenにおけるシェルスクリプトやWindowsのバッチコマンドを実行することが出来ます。
warファイルによる配布のみでなく、以下のOSのパッケージも配布されています。
- Windows
- Ubuntu/Debian
- Red Hat/Fedora/CentOS
- Mac OS X
- openSUSE
- FreeBSD
- OpenBSD
- Gentoo
JavaEEでのアプリケーション開発でよく利用されていますが、他の言語でのアプリケーション開発でも利用できます。
Jenkins用Dockerコンテナの起動/動作確認
Jenkinsの環境をDockerで構築するには、Jenkinsの公式イメージを利用します。JavaおよびTomcatの実行環境もすべてこのイメージ内に設定済みです。
次のdocker runコマンドをDocker実行環境上で実行し、Jenkinsの実行環境を起動します。次のコマンドは、「jenkinsserver」という名前のコンテナを、Jenkinsの最新の公式イメージであるjenkins:latestをもとに起動します。その際に、ホストマシンの80番ポートとコンテナの8080番ポートを転送します。
$ sudo docker run --name jenkinsserver\ > -p 80:8080\ > -p 50000:50000\ > -d jenkins
起動にしばらく時間がかかりますが、Dockerコンテナが起動したら次のようにdocker psコマンドで確認します。
$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 96c897d33167 jenkins "/bin/tini -- /usr/l 49 seconds ago Up 48 seconds 50000/tcp, 0.0.0.0:80->8080/tcp jenkinsserver
ブラウザからDocker実行環境に割り当てられたアドレスの80番ポートにアクセスします。
Jenkinsの使い方の詳細については、公式サイトを参照してください。
おわりに
今回の記事では、まず、Dockerの実行環境を構築するAmazon Web Services の仮想クラウドサーバEC2でDockerを動作させ、そこでCIツールである「Jenkins」の環境構築手順を紹介しました。次回の記事では、Dockerを使ったソースコードバージョン管理ツールである「GitLab」の環境構築手順を紹介します。
