Jenkins入門【2.0対応】 - オープンソースCIツール(1)
Jenkinsをインストールして使ってみよう[Mac/Linux/Windows]
継続的インテグレーションツール「Jenkins」の使い方を基礎から解説する連載がスタート。初回は、Jenkinsの概要とインストール手順、簡単なジョブの登録方法を説明する。
Jenkinsとは何か?
「Jenkins」というツールをご存じだろうか? 情報に敏感な読者であれば「継続的インテグレーション(CI)」という言葉とともにネット上で一度や二度は見たことがあるかもしれない。しかしながら「継続的インテグレーション」という言葉の難解さや「Javaで作成されている」という点で、敷居が高く感じられ、導入を見送っているプログラマーの方もいるのではないだろうか。
そんな方々にとって、本連載がJenkinsを使うきっかけになれば幸いだ。本連載では、Jenkinsの使い方を基礎から説明する。その説明用のプログラミング環境としてはRubyを採用しているが、他の環境の方にも参考としていただけるようJenkinsの本質的な機能内容を重点的に説明していく。
継続的インテグレーション
例えばRails(Ruby on Rails)でWebアプリケーションを開発し、リリースすることを考えてみてほしい。
- プログラミング
- テストの実行
- リファクタリング
- デプロイ
一度作った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に付属するコマンドラインツールが必要だ。このツールは、次のコマンドでインストールできる。
$ xcode-select --install
|
2Homebrewのインストール
それでは、Homebrewをインストールしよう。ユーティリティのターミナルを立ち上げ、オフィシャルページを参考にし、次のコマンドを入力する。
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
しばらく待つとHomebrewがインストールされるはずだ。
3Jenkinsのインストール
最後に、次のコマンドを入力してJenkinsをインストールする。
$ brew install jenkins
|
しばらく待つとインストールが完了し、次のように表示される。
==> 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を起動するためのコマンドである。
4Jenkinsの起動
以上で環境の準備は完了だ。ターミナル画面の上記のコマンド入力の指示に従い、Jenkinsを起動してみよう。
$ brew services start jenkins
|
5Jenkinsの表示
起動できたらWebブラウザーで次のURLを開いてみよう。
- http://localhost:8080
Jenkinsの初回起動時は、上記URLのページで管理者パスワードを入力する必要がある(図1)。
図1の赤字で表示されているパスのファイルをリスト5のコマンドで表示し(※ファイルパスは環境ごとに異なるので注意)、ファイル内に記載されているパスワードを[Administrator password]テキストボックスにコピー&ペーストしてほしい。
$ cat /Users/yamamotokazuhisa/.jenkins/secrets/initialAdminPassword
|
※Windows環境では後述の「Unix用コマンドユーティリティのインストール」によりcat
コマンドが使用できるようになる。
図1の[Continue]ボタンをクリックして次に進むと、Jenkinsを拡張・カスタマイズするプラグインをインストールするためのページが表示される(図2)。ここで「Install suggested plugins」(推奨プラグインの一括インストール)をクリックしよう。すぐにインストールが開始される。
次に表示されるページでは初期ユーザー登録を行う。必要な項目を入力して[Save and Finish]ボタンを押す。
その後、画面の指示に従っていけば、ダッシュボード画面が表示されるはずだ。
次にLinuxの説明に入るが、LinuxやWindowsを使わない場合は、ここから「実行してみよう」の節まで読み飛ばしてよい。
Linuxの場合
ここではCentOS 7にJenkinsをインストールする例を掲載する。RedHat系OSであれば同じ手法でインストールできるはずなので試してみてほしい。Ubuntu/Debian系などRedHat系以外にインストールする場合は、英語になるが「公式サイトのインストール方法」を参照してほしい。
1yumへのJenkinsリポジトリの追加
残念ながらOS標準のパッケージ管理機能yum
にJenkinsのリポジトリは含まれていない。そこでJenkinsの公式サイトが公開しているリポジトリを追加する。これにはターミナルで次のコマンドを入力して実行しよう。
$ 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
|
2Jenkinsのインストール
次のコマンドでJenkinsのインストールを行う。
$ sudo yum install jenkins
|
3Jenkinsの起動
それでは、次のコマンドでJenkinsを起動してみよう。
$ sudo service jenkins start
|
4Jenkinsの表示
起動できたらWebブラウザーで次のURLを開いてみよう。
- http://localhost:8080
あとは、Macの場合と同じ手順で管理者パスワードを設定すればJenkinsが利用できるようになる。
5Jenkinsの表示が日本語化されないときの対処方法
図5のスクリーンショットのように表示されればインストールは成功だ。そうではなく日本語で表示されないときは、ブラウザーの言語設定を確認してみよう。
Firefoxであれば[言語設定]を「日本語」のみに設定することで日本語表示に変更される。具体的には、(右上にあるメニューの)[設定]を実行し、表示される[Firefox の設定]ダイアログの[コンテンツ]タブを開き、[言語設定]ボタンをクリック。図6のダイアログが表示されるので、[言語の優先順位]を「日本語 [ja]」のみに変更すればよい(つまり、「英語/米国 [en-us]」などを[削除]する)。
次に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)。
これによりjenkins-2.x.zip
ファイルがダウンロードされる。その.zipファイルを展開した中にあるjenkins.msi
ファイルをダブルクリックしてJenkinsインストーラーを開始すればよい。開始するとウィザード(図8)が表示されるので、指示に従ってインストールを進める(※ウィザードの各ページの内容については、難しくないので本稿では説明を割愛する)。
インストーラーではなく、コマンドラインのパッケージ管理ツール「Chocolatey」を使ってインストール/アップデートしたい場合は、ChocolateyのJenkinsパッケージを使えばよい(※ただし、最新バージョンのパッケージが配布されているとは限らないので注意してほしい)。こちらの手順の説明も割愛する。
3Jenkinsの表示
インストールが完了すると、Webブラウザーで下記のURLが自動的に開かれる。
- http://localhost:8080
あとは、Macの場合と同じ手順で管理者パスワードを設定すればJenkinsが利用できるようになる。図9のように表示されれば、インストールは成功だ。
なお、WindowsではOS起動時にJenkinsサービスが自動的に開始されるようになっている。サービスの起動状態の確認や、起動時の自動開始の設定は、[コントロール パネル]-[システムとセキュリティ]-[管理ツール]-[サービス]から行える(図10)。
実行してみよう
皆さんの環境でうまくインストールできただろうか? 次は簡単なJobを登録して実行してみよう。
Jobとは
JobとはJenkinsに実行させたい一連の操作を記述したものだ。今はWindowsのバッチファイルや、Linuxのシェルスクリプトのようなものだと考えておけばOKだ。
Jobの登録
Jenkinsの画面を開き、[新規ジョブ作成]をクリックしよう(図11)。
次に表示されるページで、[ジョブ名](ここでは「HelloWorld」)を入力し、[フリースタイル・プロジェクトのビルド]を選択して[OK]ボタンを押そう(図12)。
さらに次のページで、[ビルド手順の追加]をクリックし、表示されるリストの中から[シェルの実行]を選択しよう(図13)。
表示された[シェルスクリプト]欄(図14を参照)に、次のスクリプトを入力しよう。
echo 'Hello World.'
|
スクリプトを記述したら、ページ下部の[保存]ボタンを押そう。これでジョブの登録は完了だ。
Jobの実行
いったんトップページのダッシュボードに戻り、先ほど作成したJobをクリックしよう(図15)。
次に、左のメニューから[ビルド実行]をクリックする(図16)。
しばらく待つと、左下の[ビルド履歴]欄に項目が1つ増えるはずだ(図17はその例)。それをクリックして内容を確認しよう。
すると、次の画面のように表示される。
図18のページで[コンソール出力]をクリックすると、先ほど登録したシェルスクリプトが実行され「Hello World.」と表示されているのが確認できると思う(図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を使えばパイプラインをコードで記述できるようになる。その基本的な使い方を解説。