Ubuntu Weekly Recipe

第379回 Jujuを使ってJenkins環境を構築する

この記事を読むのに必要な時間:およそ 6 分

JenkinsはJavaで作られた継続的インテグレーションツールです。今回はこのJenkinsのマスター/スレーブ環境をJujuを用いて構築する方法をご紹介します。

Jenkinsについて

Jenkinsは現代のソフトウェア開発においてほぼ必須とも言える継続的インテグレーションにおける標準的なツールの1つなので,実際に使っている方も多いでしょう。よって今更説明する必要もないかもしれませんが,せっかくなので概要だけでも書いておきます。

Jenkinsは継続的インテグレーション(CI:Continuous Integration)を実現するためのJava製のサーバーソフトウェアです。オンプレミスでも構築できるFLOSSで高機能なCIツールとして,世界中で幅広く使われています。UbuntuでもQAチームがAutoPkgTestなどの自動化に利用しています。

Jenkinsのインストール方法

Jenkinsのインストール方法は,JenkinsのWikiにまとめている方法が一番参考になるでしょう。

最近のソフトウェアと同様にJenkinsも,短いリリース周期を採用しています注1)⁠しかしながら週一という頻度でソフトウェアがリリースされると,Ubuntuの公式リポジトリ上で互換性やセキュリティ対応を維持したままLTSの期間サポートを続けることが非常に難しくなってきます注2)⁠

注1)
JenkinsのようなCIツールとその技法が充実してきたからこそ,リリース周期も短くできるようになったとも言えます。
注2)
一応JenkinsにもLTSという概念はありますが,それでも3ヵ月ごとのリリースです。

そこでUbuntu 14.04 LTSからは公式リポジトリからJenkinsパッケージが削除されました。Jenkinsを使う場合は,JenkinsのWikiにもあるようにJenkinsが用意するリポジトリからインストールすることが推奨されています。

$ wget -q -O - https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
$ sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
$ sudo apt-get update
$ sudo apt-get install jenkins

同じWikiに掲載されているもう1つの方法が,今回紹介するサービスモデリングツールであるJujuを使う方法です。といってもJujuのCharm(構築スクリプト)が行っている「Jenkinsのインストール」自体は,上記のコマンドと同じでJenkinsのリポジトリを追加してパッケージをインストールするだけです。

Jujuの方法を使うメリットの1つは「Jenkinsをインストールするマシンを用意する」ことが簡単になるということです。つまりAmazon EC2なりWindows AzureなりGoogle Compute EngineなりLXC……といったさまざまな環境にUbuntuをインストールする部分から自動化できます。Jenkinsをマスター/スレーブ構成にして,スレーブをどんどん増やしてスケールしたい場合,OSのインストールを省けるのは大きな作業簡略化になるでしょう。

そもそもJujuはWindows/OS X用のクライアントソフトウェアも提供しているため,操作側にUbuntuを用意する必要すらありません。

しかもこれらのクラウドサービスやベアメタルに応じて操作方法を変える部分はJujuが吸収してくれるため,使うサービスによって操作方法を覚え直す必要もないのです。今回はAmazon EC2を使って説明しますが,Windows Azureを使う場合であっても初期設定(APIキーの設定)だけ変えれば,あとは同じコマンドを「コピペ」すれば動きます注3)⁠

注3)
という建前になっています。

というわけで今回はJujuを使ってJenkinsのマスター/スレーブ環境を構築します。さらにJenkinsのGitHub PullRequest Builder Pluginをインストールして,PullReqがきたらJenkinsにビルドジョブを走らせるようにしてみましょう。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入