LoginSignup
49
46

More than 5 years have passed since last update.

shenzhenのipaよりビルド時間が3割速いというfastlane/gymがリリースされたので導入したら、ビルド時間が4分も短縮した

Last updated at Posted at 2015-08-12

イケメンで有名なfastlane作者のKrauseFxさんが、最近gymというfastlaneツール群の新作ビルドツールを作っている模様で注目していましたが、昨夜ファーストリリースされました。

同時に更新された、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ビルド用に別途用意することで凌いでいました。

Screen Shot 2015-08-12 at 13.15.39.png

Archiveのテストターゲットは未チェック・Runのテストターゲットはチェック状態が通常です。
ipaコマンドはArchive機能なので、Archiveの設定に従うべきだと思うのですが…。
(見つかられていないですが、Issueに上がっているかもしれません)

ログの出力がキレイでコンパクト

Beautiful inline build output

Thoughts on iOS build tools — Felix Krauseでも言及されていて、拘りを感じますし、実際にキレイで分かりやすくて関心しました( ´・‿・`)さすがイケメン。

supermarin/xcprettyなど別途使わなくても、こんなにコンパクトにキレイに出力してくれます(fastlaneのレポートも混ざっています)。

Screen Shot 2015-08-12 at 13.21.49.png

最後、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に記述していたipagymに変えただけで一発で動きました。

ipa(
  workspace: WORKSPACE,
  scheme: SCHEME,
  configuration: "AdHoc"
)

gym(
  workspace: WORKSPACE,
  scheme: SCHEME,
  configuration: "AdHoc"
)

というわけで、特にこれまでshenzhenのipaコマンドを使っていた人は対応一瞬なので、 gymかなりオススメです!

後で気付いた問題点(追記)

全て解決済みです

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と感じたら導入が良いと思いますヽ(・ω・`)

49
46
11

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
49
46