学生かえるエンジニアのブログ

iOSを主にやる勉強中エンジニア。かえるが好き。ピクルスってかわいいよね。

xcodebuild でビルドだけする on CI

TravisCI で xcodebuild 実行してビルド通過するかチェックしたいなと思いました。

個人開発のアプリなのでユニットテストなども書いて無く、とりあえずビルドをパスするかどうかだけチェックしたかったんですが、意外と引っかかってしまったのでメモしておきます。

前提

  • テストを書いてない
  • 今回はただビルドするだけ
  • Targets に Today ExtensionWatchKit App がある
  • CocoapodsCarthage を使用

結論

下記のようなコマンドを実行

xcodebuild -workspace Sample.xcworkspace \
-scheme Sample \
-destination 'name=iPhone 8' \
build

つまずきポイント

-destination ではなく -sdk オプションを指定していた

これのせいで、Today Extension の build でつまづいたり、Provisioning Profile を用意しろと言われたり、auto signing / manual signing が原因かと思い試行錯誤したりしていました。

補足

この記事での目的は xcodebuild の話だったので趣旨には沿いませんが、私が TravisCI 上で何をしていたのかなど含め簡単に書いておきます。

.travis.yml にどのように書いたかなどは割愛させて頂きます。

CocoaPods / Carthage

もちろん pod install carthage bootstrap など実行します。そうしないとビルドが通りません。

時間

Carthage のライブラリインストールは比較的時間がかかるため、travis_waitを活用すると良いと思います。

キャッシュ

ディレクトリの Carthage/Pods/キャッシュすべきでしょう。

xcpretty

xcpretty を使って xcodebuild のログを見やすくしました。 大したことはしてませんがまたいずれ記事にできたら良いかなと思います。

GitHub - supermarin/xcpretty: Flexible and fast xcodebuild formatter

参考

xcode7 - How to use xcodebuild in Xcode 7 with a watch extension - Stack Overflow

Xcodeでのビルドを自動化するxcodebuildコマンドとIPAファイルを作成してiTunes Connect(Testflight)に投げる方法 - 酢ろぐ!

後記

github に push したら、そのまま TestFlight / DeployGate などにデプロイしたり、fastlane 使ったりしてアプリ申請まで自動で行ったり、どんどん自動化していきたい。

けど個人開発のちょっとしたアプリでそこまで労力かけるのもね。