xcodebuild でビルドだけする on CI
TravisCI で xcodebuild 実行してビルド通過するかチェックしたいなと思いました。
個人開発のアプリなのでユニットテストなども書いて無く、とりあえずビルドをパスするかどうかだけチェックしたかったんですが、意外と引っかかってしまったのでメモしておきます。
前提
- テストを書いてない
- 今回はただビルドするだけ
- Targets に
Today Extension
とWatchKit App
がある Cocoapods
とCarthage
を使用
結論
下記のようなコマンドを実行
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 使ったりしてアプリ申請まで自動で行ったり、どんどん自動化していきたい。
けど個人開発のちょっとしたアプリでそこまで労力かけるのもね。