Jenkins入門【2.0対応】 - オープンソースCIツール(1)

Jenkins入門【2.0対応】 - オープンソースCIツール(1)

Jenkinsをインストールして使ってみよう[Mac/Linux/Windows]

2016年6月9日 改訂 (初版: 2013/11/01)

継続的インテグレーションツール「Jenkins」の使い方を基礎から解説する連載がスタート。初回は、Jenkinsの概要とインストール手順、簡単なジョブの登録方法を説明する。

山本 和久(Hatena::Diary
  • このエントリーをはてなブックマークに追加

Jenkinsとは何か?

 「Jenkins」というツールをご存じだろうか? 情報に敏感な読者であれば「継続的インテグレーション(CI)」という言葉とともにネット上で一度や二度は見たことがあるかもしれない。しかしながら「継続的インテグレーション」という言葉の難解さや「Javaで作成されている」という点で、敷居が高く感じられ、導入を見送っているプログラマーの方もいるのではないだろうか。

 そんな方々にとって、本連載がJenkinsを使うきっかけになれば幸いだ。本連載では、Jenkinsの使い方を基礎から説明する。その説明用のプログラミング環境としてはRubyを採用しているが、他の環境の方にも参考としていただけるようJenkinsの本質的な機能内容を重点的に説明していく。

継続的インテグレーション

 例えばRails(Ruby on Rails)でWebアプリケーションを開発し、リリースすることを考えてみてほしい。

  1. プログラミング
  2. テストの実行
  3. リファクタリング
  4. デプロイ

 一度作ったWebサービスは二度といじらない……そんなサービスはあり得ないはずだ。大抵の場合、1~4を何度か繰り返すこととなる。この繰り返しのことを「継続的インテグレーション」といい、Jenkinsはそれを手助けするためのツールなのだ。導入することで次のようなメリットがある。

  • テストの自動化
  • デプロイの自動化
  • 各種タイミングでの通知

私のプロジェクトは小規模なので必要ない?

 答えはNOだ。要望対応やバグ対応でプロダクトコードは毎日のように肥大化しているはずだ。加えてWebサービスが使用する関連アプリケーションの再起動など、デプロイ時の作業もより複雑になっていくだろう。できればプロジェクトの開始と同時にJenkinsを導入するべきだが、ソースコードが小規模なうちになるべく早く導入しよう。

インストール

 本稿では、インストール方法をMac(OS X)/Linux/Windowsデベロッパー向けに解説する。まずはMac向けについて説明しよう。Linuxユーザーの場合は、「Linuxの場合」まで、Windowsユーザーの場合は「Windowsの場合」読み飛ばしてよい。

Macの場合

 OS Xの代表的なパッケージマネージャーとして「Homebrew」が挙げられる。そこでMacユーザーはHomebrewを使ってJenkinsをインストールしてみよう。

1Xcodeコマンドラインツールのインストール

 HomebrewのインストールにはXcodeに付属するコマンドラインツールが必要だ。このツールは、次のコマンドでインストールできる。

Bash
$ xcode-select --install
リスト1 Xcodeコマンドラインツールをインストールするためのコマンド
2Homebrewのインストール

 それでは、Homebrewをインストールしよう。ユーティリティのターミナルを立ち上げ、オフィシャルページを参考にし、次のコマンドを入力する。

Bash
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
リスト2 Homebrewをインストールするためのコマンド

 しばらく待つとHomebrewがインストールされるはずだ。

3Jenkinsのインストール

 最後に、次のコマンドを入力してJenkinsをインストールする。

Bash
$ brew install jenkins
リスト3 Jenkinsをインストールするためのコマンド

 しばらく待つとインストールが完了し、次のように表示される。

Bash
==> Downloading http://mirrors.jenkins-ci.org/war/2.1/jenkins.war
==> Downloading from http://ftp.yz.yamagata-u.ac.jp/pub/misc/jenkins/war/2.1/jenkins.war
######################################################################## 100.0%
==> jar xvf jenkins.war
==> Caveats
Note: When using launchctl the port will be 8080.

To have launchd start jenkins now and restart at login:
 brew services start jenkins
Or, if you don't want/need a background service you can just run:
 jenkins
==> Summary
?  /usr/local/Cellar/jenkins/2.1: 6 files, 64.3M, built in 21 seconds
Jenkinsのインストール内容の出力(ターミナル画面)

 太字の行は、Jenkinsを起動するためのコマンドである。

4Jenkinsの起動

 以上で環境の準備は完了だ。ターミナル画面の上記のコマンド入力の指示に従い、Jenkinsを起動してみよう。

Bash
$ brew services start jenkins
リスト4 Jenkinsを起動するためのコマンド
5Jenkinsの表示

 起動できたらWebブラウザーで次のURLを開いてみよう。

  • http://localhost:8080

 Jenkinsの初回起動時は、上記URLのページで管理者パスワードを入力する必要がある(図1)。

図1 Jenkins初回起動時:管理者パスワードの入力(Mac/Linux/Windows共通)

 図1の赤字で表示されているパスのファイルをリスト5のコマンドで表示し(ファイルパスは環境ごとに異なるので注意)、ファイル内に記載されているパスワードを[Administrator password]テキストボックスにコピー&ペーストしてほしい。

Bash
$ cat /Users/yamamotokazuhisa/.jenkins/secrets/initialAdminPassword
リスト5 管理者パスワードを表示するコマンド(Mac/Linux/Windows共通)

Windows環境では後述の「Unix用コマンドユーティリティのインストール」によりcatコマンドが使用できるようになる。

 図1の[Continue]ボタンをクリックして次に進むと、Jenkinsを拡張・カスタマイズするプラグインをインストールするためのページが表示される(図2)。ここで「Install suggested plugins」(推奨プラグインの一括インストール)をクリックしよう。すぐにインストールが開始される。

図2 Jenkins初回起動時:推奨プラグインの一括インストール(Mac/Linux/Windows共通)

 次に表示されるページでは初期ユーザー登録を行う。必要な項目を入力して[Save and Finish]ボタンを押す。

図3 Jenkins初回起動時:初期ユーザー登録(Mac/Linux/Windows共通)

 その後、画面の指示に従っていけば、ダッシュボード画面が表示されるはずだ。

図4 Jenkinsの表示(Mac/Linux/Windows共通)

 次にLinuxの説明に入るが、LinuxやWindowsを使わない場合は、ここから「実行してみよう」の節まで読み飛ばしてよい。

Linuxの場合

 ここではCentOS 7にJenkinsをインストールする例を掲載する。RedHat系OSであれば同じ手法でインストールできるはずなので試してみてほしい。Ubuntu/Debian系などRedHat系以外にインストールする場合は、英語になるが「公式サイトのインストール方法」を参照してほしい。

1yumへのJenkinsリポジトリの追加

 残念ながらOS標準のパッケージ管理機能yumにJenkinsのリポジトリは含まれていない。そこでJenkinsの公式サイトが公開しているリポジトリを追加する。これにはターミナルで次のコマンドを入力して実行しよう。

Bash
$ sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
$ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
リスト6 Jenkinsのリポジトリを追加するためのコマンド
2Jenkinsのインストール

 次のコマンドでJenkinsのインストールを行う。

Bash
$ sudo yum install jenkins
リスト7 Jenkinsをインストールするためのコマンド
3Jenkinsの起動

 それでは、次のコマンドでJenkinsを起動してみよう。

Bash
$ sudo service jenkins start
リスト8 Jenkinsを起動するためのコマンド
4Jenkinsの表示

 起動できたらWebブラウザーで次のURLを開いてみよう。

  • http://localhost:8080

 あとは、Macの場合と同じ手順で管理者パスワードを設定すればJenkinsが利用できるようになる。

図5 Jenkinsの表示(Linux)
5Jenkinsの表示が日本語化されないときの対処方法

 図5のスクリーンショットのように表示されればインストールは成功だ。そうではなく日本語で表示されないときは、ブラウザーの言語設定を確認してみよう。

 Firefoxであれば[言語設定]を「日本語」のみに設定することで日本語表示に変更される。具体的には、(右上にあるメニューの)[設定]を実行し、表示される[Firefox の設定]ダイアログの[コンテンツ]タブを開き、[言語設定]ボタンをクリック。図6のダイアログが表示されるので、[言語の優先順位]を「日本語 [ja]」のみに変更すればよい(つまり、「英語/米国 [en-us]」などを[削除]する)。

図6 [言語設定]を「日本語」のみに設定する(Firefox)

図6 [言語設定]を「日本語」のみに設定する(Firefox)

 次にWindowsの説明に入るが、Windowsを使わない場合は、ここから「実行してみよう」の節まで読み飛ばしてよい。

Windowsの場合

 ここでは参考までに*1、Windows 10にJenkinsをインストールする例を示す。もちろん同様の手順で、それ以外のバージョンのWindows OSにもインストール可能だ。

  • *1 「参考までに」と記載したのは、ここではあくまで一般的なインストール方法を説明しているにすぎないからだ。今後の連載では、RubyやRailsを題材に使っているが、Mac/Linux環境でのみチェックしており、Windows環境のJenkinsでも全く同じように動作するかを保証できないので、今後の連載の内容をWindowsで試そうと考えている方は、その点をあらかじめご了承いただきたい。
1Unix用コマンドユーティリティのインストール

 JenkinsはUnixベースのプラットフォームでの動作が前提となっているため、Windows環境で実行するには事前に各種Unix用コマンドを使えるようにしておく必要がある※2016/6/10追記: 後述の「実行してみよう」で説明されているシェルの実行などの際に必要となるが、Windowsバッチコマンドの実行による.NETやC++のビルドなどの際にはなくても問題ない)。具体的には、

最新版UnxUtils.zipファイルをダウンロードし、そのZipファイルに含まれる全ての.exeファイル(=各種Unix用コマンド)を任意のフォルダー(C:\binフォルダーなど)に展開する。あとはこのフォルダーへのパスを通しておけばよい(その手順はこちらを参考にされたい)。なお、パスが確実に有効になるように、ここでOSを再起動した方がよい。

2Jenkinsのインストール

 JenkinsはWindowsサービスとしてインストールする必要がある。手動でインストールすることも可能だがWindowsサービスに登録する手間がかかるので、一般的にはWindowsインストーラーを使って全て自動でインストールすることが推奨されている。ここではその方法を簡単に紹介する。

 なお、Jenkinsの前提条件としてJavaが必要となる。未インストールの場合は、ここでインストールしておこう(その手順は本稿の範囲外になるので割愛する)。

 Jenkinsのインストーラーをダウンロードするには、「Jenkins公式サイト」の上部メニューにある[Download ▼]をクリックし、それにより表示される[Weekly Release]の[2.x.war ▼]ボタン配下の[Windows]をクリックすればよい(図7)。

図7 Windows用Jenkinsインストーラーのダウンロード

 これによりjenkins-2.x.zipファイルがダウンロードされる。その.zipファイルを展開した中にあるjenkins.msiファイルをダブルクリックしてJenkinsインストーラーを開始すればよい。開始するとウィザード(図8)が表示されるので、指示に従ってインストールを進める(ウィザードの各ページの内容については、難しくないので本稿では説明を割愛する)。

図8 Windows用Jenkinsインストーラーのウィザード
図8 Windows用Jenkinsインストーラーのウィザード

 インストーラーではなく、コマンドラインのパッケージ管理ツール「Chocolatey」を使ってインストール/アップデートしたい場合は、ChocolateyのJenkinsパッケージを使えばよい(ただし、最新バージョンのパッケージが配布されているとは限らないので注意してほしい)。こちらの手順の説明も割愛する。

3Jenkinsの表示

 インストールが完了すると、Webブラウザーで下記のURLが自動的に開かれる。

  • http://localhost:8080

 あとは、Macの場合と同じ手順で管理者パスワードを設定すればJenkinsが利用できるようになる。図9のように表示されれば、インストールは成功だ。

図9 Jenkinsの表示(Windows)

 なお、WindowsではOS起動時にJenkinsサービスが自動的に開始されるようになっている。サービスの起動状態の確認や、起動時の自動開始の設定は、[コントロール パネル]-[システムとセキュリティ]-[管理ツール]-[サービス]から行える(図10)。

図10 Jenkinsサービスの確認や設定

実行してみよう

 皆さんの環境でうまくインストールできただろうか? 次は簡単なJobを登録して実行してみよう。

Jobとは

 JobとはJenkinsに実行させたい一連の操作を記述したものだ。今はWindowsのバッチファイルや、Linuxのシェルスクリプトのようなものだと考えておけばOKだ。

Jobの登録

 Jenkinsの画面を開き、[新規ジョブ作成]をクリックしよう(図11)。

図11 Jenkinsでの新規ジョブの作成

 次に表示されるページで、[ジョブ名](ここでは「HelloWorld」)を入力し、[フリースタイル・プロジェクトのビルド]を選択して[OK]ボタンを押そう(図12)。

図12 ジョブ名とビルド内容の設定

 さらに次のページで、[ビルド手順の追加]をクリックし、表示されるリストの中から[シェルの実行]を選択しよう(図13)。

図13 ビルド手順として[シェルの実行]の追加

 表示された[シェルスクリプト]欄(図14を参照)に、次のスクリプトを入力しよう。

Bash
echo 'Hello World.'
リスト12 「Hello World.」と表示するだけのシェルスクリプト
図14 表示された[シェルスクリプト]欄

 スクリプトを記述したら、ページ下部の[保存]ボタンを押そう。これでジョブの登録は完了だ。

Jobの実行

 いったんトップページのダッシュボードに戻り、先ほど作成したJobをクリックしよう(図15)。

図15 「HelloWorld」という名前のJobをクリックしてプロジェクトを開く

 次に、左のメニューから[ビルド実行]をクリックする(図16)。

図16 ビルドの実行

 しばらく待つと、左下の[ビルド履歴]欄に項目が1つ増えるはずだ(図17はその例)。それをクリックして内容を確認しよう。

図17 [ビルド履歴]欄にビルドされた項目が並んでいる

 すると、次の画面のように表示される。

図18 [コンソール出力]を実行して、ビルド時に実行されたJobを確認しようとしているところ

 図18のページで[コンソール出力]をクリックすると、先ほど登録したシェルスクリプトが実行され「Hello World.」と表示されているのが確認できると思う(図19)。

図19 先ほど登録したシェルスクリプトの実行結果が表示されている

まとめ

 Jenkinsのインストールから簡単なJobの実行までを行ってみた。シェルスクリプトの登録時にピンときた読者の方もいらっしゃると思うが、JenkinsはWebのGUIで操作するcronのようなものだ。ただし、cronとは次の点で異なる。

  • 実行開始のタイミングが時間指定だけではなく、さまざまな条件にフックさせることができる
  • ユーザーへの出力通知結果もさまざまな方法が選択できる
  • プラグインによって機能拡張できる

 次回は、Railsプロジェクトのテストを実行する環境に着目しつつ、Jenkinsを使いこなすためのさまざまなポイントについて説明していこうと思う。

1. 【現在、表示中】≫ Jenkinsをインストールして使ってみよう[Mac/Linux/Windows]

継続的インテグレーションツール「Jenkins」の使い方を基礎から解説する連載がスタート。初回は、Jenkinsの概要とインストール手順、簡単なジョブの登録方法を説明する。

2. Jenkinsでテストを実行してみよう+Rubyテストの基礎(RSpec&Turnip使用)

Jenkinsを使って小さなテストを自動実行して、開発スピードを飛躍的に向上させよう。また、MacでのRuby/Rails環境の構築方法から、テストフレームワーク「RSpec」とインテグレーションテスト環境「Turnip」を使ったテストの書き方までを解説する。

3. Jenkinsでアプリケーションをデプロイしてみよう

継続的インテグレーションの手順のうち、デプロイに焦点を当てて、テストの実行から、GitによるHeroku環境へのデプロイまでを自動化する方法を解説。Mac向けのGrowlを使って実行結果を通知する方法も説明。

4. Jenkins+Vagrantでテストを分散しよう

テストの分散は、環境を分けたい場合や速度を上げたい場合に役立つ。Vagrantで複数マシンのテスト環境を構築し、Jenkinsから複数マシンにまたがるテストジョブを実行してみよう。また、お勧めの便利なプラグインも紹介する。

5. Jenkins 2の新機能「Pipeline」を使ってみよう

何をやっているか分からない「Jenkinsおじさん」の作業を見える化しよう。Jenkins 2に新搭載されたPipelineを使えばパイプラインをコードで記述できるようになる。その基本的な使い方を解説。

サイトからのお知らせ

Twitterでつぶやこう!