15
potatotips#12 / @ginrou799 http://jenkins-ci.org/ を使う

Jenkins on-mac

Embed Size (px)

Citation preview

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ライフを!