Y's note

Web技術・プロダクトマネジメント・そして経営について

本ブログの更新を停止しており、今後は下記Noteに記載していきます。
https://note.com/yutakikuchi/

継続的インテグレーション(CI)ツールJenkinsを導入するためのまとめ

概要

誰もがSorceビルドや開発debugは面倒と思う作業。これらの作業を少しでも手間を掛からないようにするために継続的インテグレーションツールのjenkinsというものがあります。jenkinsはテストおよびビルドの自動化やバグの早期発見に使われます。主にJava開発者向けのツールのようですが、他言語でも利用が出来るようです。今回の記事では主に導入周りの情報を整理したいと思います。

導入のメリット

@ITにJenkinsの特徴が書いてあります。「Hudson」改め「Jenkins」で始めるCI(継続的インテグレーション)入門 (1/4) - @IT はてなブックマーク - 「Hudson」改め「Jenkins」で始めるCI(継続的インテグレーション)入門 (1/4) - @IT

日本語版のJenkins wikiにも色々と書いてあります。Meet Jenkins - 日本語 - Jenkins Wiki はてなブックマーク - Meet Jenkins - 日本語 - Jenkins Wiki

  • 差分サポート
  • 永続リンク
  • RSS/Eメール/IM との連携
  • ビルド後のタグ
  • JUnit/TestNGによるテスト結果のレポート
  • 分散ビルド
  • ファイル指紋

infoQのJenkins開発者のコラムに流行った理由が書いてありました。InfoQ: Jenkinsによる継続的インテグレーションのススメ(1) はてなブックマーク - InfoQ: Jenkinsによる継続的インテグレーションのススメ(1)

  • インストールや設定がWebUIから行える
  • 拡張性の高いプラグイン

対応OS

本家サイトにもあるように各種OSに対応したパッケージがあるようです。Welcome to Jenkins CI! | Jenkins CI はてなブックマーク - Welcome to Jenkins CI! | Jenkins CI

導入

環境

私が設定する環境はMacOSX Version10.6.8です。

installer download

http://jenkins-ci.org/content/thank-you-downloading-os-x-installer ここからOSXのinstallerをダウンロードします。落としてきたjenkins-1.451.pkgというpkgをクリックもしくはinstallerコマンドにてインストールします。

起動確認

インストールが終わるとJenkinsプロセスは立ち上がっている事が確認できます。

$ ps auxww | grep jenkins
daemon     509   0.0  4.2  2945708 177352   ??  Ss    1:58AM   0:12.45 /usr/bin/java -jar /Applications/Jenkins/jenkins.war

インストールが終わるといきなり http://localhost:8080/ にアクセスしますが、エラーが表示されるだけです。私の場合このエラーはJenkinsの再起動で直りました。Jenkinsの起動/停止は下に示します。

停止、起動コマンド

自動で起動されても停止や自分で再起動できないと困るので操作方法を記します。LaunchDaemonで自動起動を管理しているようです。

  • 起動
$ udo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
  • 停止
$ sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
設定ファイル

/Library/LaunchDaemons/org.jenkins-ci.plist は以下のようなxmlファイルでjenkinsの起動設定を知る事ができます。/Users/Shared/Jenkins/Home/がJenkinsファイルの置き場となっていて、大量のpluginファイルなんかがあります。

?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>EnvironmentVariables</key>
  <dict>
    <key>JENKINS_HOME</key>
    <string>/Users/Shared/Jenkins/Home</string>
  </dict>
  <key>GroupName</key>
  <string>daemon</string>
  <key>KeepAlive</key>
  <true/>
  <key>Label</key>
  <string>org.jenkins-ci</string>
  <key>ProgramArguments</key>
  <array>
                <string>/bin/bash</string>
    <string>/Library/Application Support/Jenkins/jenkins-runner.sh</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>UserName</key>
  <string>daemon</string>
</dict>
</plist>
起動Port変更

8080をJenkinsのdefaultポートとしているようですが、私はGAE開発で8080を使うので別のポートに変更します。58080を使うように修正します。

$ defaults write /Library/Preferences/org.jenkins-ci httpPort 58080
$ sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
$ sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
WebUI

以下のような画面が出力されていればインストールは成功です。