イケメンで有名なfastlane作者のKrauseFxさんが、最近gymというfastlaneツール群の新作ビルドツールを作っている模様で注目していましたが、昨夜ファーストリリースされました。
Announcing ‘gym’: Building your iOS apps has never been easier 💪 https://t.co/9uCnusbUX0 pic.twitter.com/M9xIsjd3yg
— Felix Krause (@KrauseFx) August 11, 2015
同時に更新された、gym含むビルドツールのあり方についても言及したブログ記事もとても良い内容でした:
Thoughts on iOS build tools — Felix Krause
gymの良いところ
https://github.com/fastlane/gym#why-gym に列挙されていますが、一部抜粋します。
ビルドが速い
gym builds 30% faster than other build tools like shenzhen
この恩恵が大きいと思って、早々と導入しました。
というより、nomad/shenzhenが遅いと言った方がよいかもしれません。
多分、gymはXcodeのArchive機能と同じ速さです。
shenzhenのipaコマンドは、XcodeのArchiveコマンドやxcodebuild
とちょっと違うことをやってそうで(ソース未確認)で、プラスαの時間がかかっていることにこれまで気付いていました。
また、今開発中のPlayer!では、テストターゲットもリリースビルドが走ってしまい、かつそれがSwiftのコンパイラーと相性が良くないのかビルドエラーになってしまっていて少し困っていました。
テストターゲットをRunのターゲットから外したスキームを、fastlaneビルド用に別途用意することで凌いでいました。
Archiveのテストターゲットは未チェック・Runのテストターゲットはチェック状態が通常です。
ipaコマンドはArchive機能なので、Archiveの設定に従うべきだと思うのですが…。
(見つかられていないですが、Issueに上がっているかもしれません)
ログの出力がキレイでコンパクト
Beautiful inline build output
Thoughts on iOS build tools — Felix Krauseでも言及されていて、拘りを感じますし、実際にキレイで分かりやすくて関心しました( ´・‿・`)さすがイケメン。
supermarin/xcprettyなど別途使わなくても、こんなにコンパクトにキレイに出力してくれます(fastlaneのレポートも混ざっています)。
最後、6分かかったと書いてありますが、これまでは10分かかっていました。
1つ残念なのは、Configurationを指定しても、Building Application
の表に出ないことです。
その下のxcodebuild
コマンドの指定には入っているので効いてはいますので成果物としては問題ないはずです。
Pull Request頑張ろうか迷いつつ、とりあえずIssueだけ立てておきました。
https://github.com/fastlane/gym/issues/5
→ 次の版(0.2.0)で表にも出るようになりました。
ここに書いた以外もメリット・機能などあるので、是非深掘りしてみて下さい。
導入方法
https://github.com/fastlane/gym#usage に書いてある通り、gym
コマンドと必要に応じていくつかオプションを指定するだけです。
インターフェースがshenzhenのipaとほぼ一緒なので、移行も楽です。
僕は、以下のようにFastfile
に記述していたipa
をgym
に変えただけで一発で動きました。
ipa(
workspace: WORKSPACE,
scheme: SCHEME,
configuration: "AdHoc"
)
↓
gym(
workspace: WORKSPACE,
scheme: SCHEME,
configuration: "AdHoc"
)
というわけで、特にこれまでshenzhenのipaコマンドを使っていた人は対応一瞬なので、 gym
かなりオススメです!
後で気付いた問題点(追記)
全て解決済みです
- https://github.com/KrauseFx/fastlane/releases/tag/1.17.0
- https://github.com/fastlane/gym/releases/tag/0.2.0
gym
の後にdeliver
コマンドを実行すると、エラーが発生
deliver
は、iTuensConnectにipaファイルをアップロードするのに使っていて、通常のPull Requestの自動ビルドの時には走らせていないものなので、発見が遅れました。
Issue上げたので、詳しくはこちらです。(解決はしたが、これが良い方法なのか質問中)
https://github.com/fastlane/gym/issues/6
gym
でビルド後にdeliver
でiTunesConnectへアップロードしたら怒られた
つらいです。
Issueは立てたので、iTunesConnect用のlaneはとりあえずipa
に戻して様子見しようかな(´・ω・`)
ただ、ビルド速いことなどは嬉しいので解決したら、めげずにまた復活させたいです。
Dear developer,
We have discovered one or more issues with your recent delivery for "Player! - Your Best Sport Feed, Your New Sport Life". To process your delivery, the following issues must be corrected:
Invalid Swift Support - The bundle contains an invalid implementation of Swift. The app may have been built or signed with non-compliant or pre-release tools. Visit developer.apple.com for more information.
Once these issues have been corrected, you can then redeliver the corrected binary.
Regards,
The App Store team
他にもIssue一覧は、 https://github.com/fastlane/gym/issues に上がっていますので、ざっと見OKと感じたら導入が良いと思いますヽ(・ω・`)