potatotips#12 / @ginrou799
で
http://jenkins-ci.org/
を使う
Who?
• Yuichi Takeda (@ginrou799)
• Works for 株式会社ミクシィ
• iPhone開発がメイン
• 年明けからスマホアプリ研修の公開版やるので

良かったら参加してね!
iOS開発でビルド、どうしてますか?
• Travis CI
• OS X Server
• Jenkins
• 手元でビルド
iOS開発でビルド、どうしてますか?
• Travis CI
• OS X Server
• Jenkins
• 手元でビルド
OS X上でJenkinsを運用するtipsについて紹介
弊社での運用
• インストール・アップデート
• jarをダウンロードして起動
• Daemon化はlaunchctlで
• (今はhomebrewを使うほうが便利かも)
• 構成
• 4台のmac miniでmaster-slave 構成
XcodeやOSのアップデート
• 毎年の恒例行事
• iOS SDKも同時に更新されて突然ビルドが失敗する
• プロジェクトごとにXcodeやOSバージョンを選択
• xcode-select
• 一部のマシンのみ上げて検証する
GUIとVNC
• OS XのアプリケーションはGUIが使えることを

前提としたものが多い
ビルド中に
すいませーん、ビルド止まっちゃったんですけど…
お、何でだろう…
ということでVNCでつないでみると
ビルド中に
こういうダイアログが出て止まってた…
GUIとVNC
• OS XのアプリケーションはGUIが使えることを

前提としたものが多い
• ということでGUIが操作できる環境が必要
• 席の近くに置いてく、遠隔地ならVNCが必須
• XcodeやOSのアップデートも例外でない
Yosemiteでslaveのjobが動かない
• Yosemiteをslaveにあげてjobを実行すると





と出てテストに失敗する
• Travis CIでも同じトラブルが

http://blog.travis-ci.com/2014-10-22-xcode-6-update-postmortem/
Test operation failure: Timed out waiting 120 seconds
for simulator to boot, current state is 1.
Yosemiteでslaveのjobが動かない
• 原因
• Jenkinsのslave jobはssh経由で実行
• MacのsshdがGUIを操作できない
• 解決策
• このissueで議論されてる https://github.com/facebook/xctool/issues/404
• JNLPを使う
• Userコンテキストでsshdを立てる (これで凌いでいます)
Jenkinsいいところ
JenkinsにかぎらずCIで得られる恩恵は大きい
• プルリクエストごとに自動テスト
• マージされたら自動でビルドして配信

DeployGateを使うと便利ですよ!!
Jenkinsいいところ
履歴が残る
• 「こないだの申請どれでしたっけ?」が残る
• 「このビルドのリビジョンどれだっけ」が残る
秘密 の管理がしやすい
• 秘密 をインストールするマシンを限定して

アクセスコントロール
まとめ
• JenkinsをMac上で管理すると所々つまるところ
がある
• Jenkinsを運用して幸せなCIライフを!

Jenkins on-mac