これまで、あまりテスト駆動開発がうまく出来ていなかったので、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.plistIf 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.plistOr 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”の順にたどっていって、以下のプラグインをインストールします。
- Jenkins Git Plugin
- Xcode Integration
これで、”Install without restart”をして、インストール後、再起動してあげればOKです。
ビルドジョブを作成
こちらは、”Jenkins – New Job”で新規のジョブを作成します。特に設定したのは、
- プロジェクト名
- gitのリポジトリ
- Build Triggers
- Xcodeの設定
- キーチェーンを正しくインストール
適当に設定
こちらは、公開鍵をユーザにインストールして、パスワードなしで接続する方法です。この場合、ログインユーザからターミナルでjenkinsを起動している場合は、特に何も設定する必要はありません
Buildのタイミングです。とりあえず、一時間に一回に設定してみました。
10 * * * *
これで毎時10分に処理が行われます。10分に一度の場合は、
*/10 * * * *
指定の分に行う場合は、
5,15,25,35,45,55 * * * *
のような感じです。
最初に行いたいのは、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のクイックルックで、インストールされるであろうファイルを解析してくれます。ここから、アンインストールのスクリプトを発見しました。
続きの記事を書きました。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にっき