iOS開発+Mac+JenkinsでCI環境構築1-Jenkinsでビルドが通るまで

このエントリーをはてなブックマークに追加
はてなブックマーク - iOS開発+Mac+JenkinsでCI環境構築1-Jenkinsでビルドが通るまで

これまで、あまりテスト駆動開発がうまく出来ていなかったので、JenkinsでのCIサーバ(継続的インテグレーションサーバ)を構築しつつ、テスト駆動開発をマスターしていきたいと思って、Jenkinsのインストールを行いました。意外と情報が少なく、まとまっていないので、備忘のために記録しておきます。

インストール

オフィシャルサイトからpkgのインストール

こちら簡単なのですが、Welcome to Jenkins CI! | Jenkins CI こちらのMac OSXのリンクからダウンロードして、インストールする方法があります。でも、後述のHomebrewを使った方法に移行するために、アンインストールしました。

pkg版のJenkinsのアンインストール

なかなか探してもうまく見つからなかったのですが、ちゃんと、アンインストール用のスクリプトファイルがインストールされていたため、それを実行すれば、きれいにアンインストールされます。
tomohisa@Tomos-MBP-17$ sh /Library/Application\ Support/Jenkins/Uninstall.command
これでアンインストール成功です。

Homebrew で Jenkins のインストール

続いて、Homebrewを使用して Jenkins のインストール
brew install jenkins
これだけですね。非常に簡単です。以下のようなメッセージが表示されます。

Warning: It appears you have MacPorts or Fink installed.
Software installed with other package managers causes known problems for
Homebrew. If a formula fails to build, uninstall MacPorts/Fink and try again.
==> Downloading http://mirrors.jenkins-ci.org/war/1.477/jenkins.war
######################################################################## 100.0%
==> Caveats
If this is your first install, automatically load on login with:
mkdir -p ~/Library/LaunchAgents
cp /usr/local/Cellar/jenkins/1.477/homebrew.mxcl.jenkins.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

If this is an upgrade and you already have the homebrew.mxcl.jenkins.plist loaded:
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
cp /usr/local/Cellar/jenkins/1.477/homebrew.mxcl.jenkins.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

Or start it manually:
java -jar /usr/local/Cellar/jenkins/1.477/libexec/jenkins.war
==> Summary
/usr/local/Cellar/jenkins/1.477: 3 files, 47M, built in 81 seconds
tomohisa@Tomos-MBP-17$ sh /Library/Application\ Support/Jenkins/
/Library/Application Support/Jenkins/: /Library/Application Support/Jenkins/: is a directory

簡単に使い方が説明されています。OSの起動の際に自動起動させる方法、また、コマンドラインから直接起動する方法です。こんかいは、provisioning、また、.sslの設定に関して、ログインしているユーザを使用したいので、terminalから起動する方法を選びました。起動の方法は、
java -jar /usr/local/Cellar/jenkins/1.477/libexec/jenkins.war

をターミナルから起動するだけですね。後は、ウェブブラウザで、http://localhost:8080を表示すると、ウェブ上でいろいろ設定できるようになります。

Xcodeで使用するための準備 – プラグインのインストール

プラグインのインストールは、非常に簡単で、左上のメニューから、”Jenkins – Manage Jenkins – Manage Plugins – Available Plugin”の順にたどっていって、以下のプラグインをインストールします。

  1. Jenkins Git Plugin
  2. Xcode Integration

これで、”Install without restart”をして、インストール後、再起動してあげればOKです。

ビルドジョブを作成

こちらは、”Jenkins – New Job”で新規のジョブを作成します。特に設定したのは、

  • プロジェクト名
  • 適当に設定

  • gitのリポジトリ
  • こちらは、公開鍵をユーザにインストールして、パスワードなしで接続する方法です。この場合、ログインユーザからターミナルでjenkinsを起動している場合は、特に何も設定する必要はありません

  • Build Triggers
  • Buildのタイミングです。とりあえず、一時間に一回に設定してみました。
    10 * * * *
    これで毎時10分に処理が行われます。10分に一度の場合は、
    */10 * * * *
    指定の分に行う場合は、
    5,15,25,35,45,55 * * * *
    のような感じです。

  • Xcodeの設定
  • 最初に行いたいのは、gitにコミットされたときにtestflightの発行です。ですから、xcode部分の設定は、ほぼデフォルトでしたが、xcodeprojのProject Directoryと、Xcode Project Nameは正しく設定する必要がありました。keychain関係も、ログインユーザから、terminalで起動している場合は、特に何も設定する必要はありませんでした。

  • キーチェーンを正しくインストール
  • キーチェーンを正しくインストールするために、XcodeのOrganizerのProvisioning Profilesから、Refreshを行うことによって、最新のプロビジョニングをすべてダウンロードさせることが出来ました。これで、Jenkinsで定期的にgitを読んでビルドさせるところまで行うことが出来ました。

おまけ

Jenkinsのきれいなアンインストール方法を探しているときに便利なツールを発見しました。
Mothers Ruin Software: Suspicious Package: Download
このツールは、インストールパッケージのスクリプトを解析して、どこに関連のファイルをインストールしているかを解析できるアプリです。pkgのクイックルックで、インストールされるであろうファイルを解析してくれます。ここから、アンインストールのスクリプトを発見しました。

Jenkinsの関連ファイル
Jenkinsの関連ファイル

続きの記事を書きました。iOS開発+Mac+JenkinsでCI環境構築2-Gitコミット時に自動的にTestflight配信 | Zero4Racer PRO Developer’s Blog

参考にした記事:
google appsをメールに使う場合の設定について
Jenkinsのメール通知にGmailを使う | コーヒーサーバは香炉である
Jenkins | なんてこったいブログ
A-Liaison BLOG: Jenkins を iOS アプリ開発に導入してみた (SenTestKit編)
Jenkins on Mac OS X; git w/ ssh public key | ColonelPanic
osx – How to stop Jenkins installed on Mac Snow Leopard? – Stack Overflow
iOSのプロジェクトをJenkinsでビルドする – soutaroにっき

Comments

comments

Powered by Facebook Comments

Post a comment

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">