2020.10.06

Bitrise+fastlane においてiOS アプリのアップロードができなくなった問題 (2020/10)

こんにちは。次世代システム研究室のT.M です。

はじめに

iOS アプリの開発において、リリース作業は時間の掛かる作業であり、頻度高く定期的に行う面倒な作業です。その面倒な作業を自動化するために、CI 環境を利用することが一般的かと思います。iOS アプリにおけるCI 環境の構築方法は、以前の投稿を参照してください。本稿では、CI サーバに依存すると面倒な問題が発生するということを、2020/09 に発生したfastlane deliver を利用したApp Store Connect のアプリのアップロードが完了しない問題をもとに説明します。

CI 環境

  • Bitrise
    • Xcode 11.3.x, on macOS 10.14.6 (Mojave)

症状

Bitrise で実行したfastlane のビルドにおいてタイムアウトが発生しました。Bitrise では、Org Standard のプランを利用しているため、タイムアウトは90分です。普段のビルドでは長くとも30分程度であるため、何らかの異常が発生していることは明らかでした。タイムアウト直前のログは以下のようになっており、deliver の途中で止まっていることがわかりました。
[hh:21:52]: Making sure the latest version on App Store Connect matches 'x.x.x'...
[hh:21:55]: 'x.x.x' is the latest version on App Store Connect
[hh:21:55]: Loading './fastlane/metadata/en-US/description.txt'...
[hh:21:55]: Loading './fastlane/metadata/en-US/keywords.txt'...
[hh:21:55]: Loading './fastlane/metadata/en-US/release_notes.txt'...
[hh:21:55]: Loading './fastlane/metadata/en-US/support_url.txt'...
[hh:21:55]: Loading './fastlane/metadata/en-US/marketing_url.txt'...
[hh:21:55]: Loading './fastlane/metadata/en-US/promotional_text.txt'...
[hh:21:55]: Loading './fastlane/metadata/en-US/name.txt'...
[hh:21:55]: Loading './fastlane/metadata/en-US/subtitle.txt'...
[hh:21:55]: Loading './fastlane/metadata/en-US/privacy_url.txt'...
[hh:21:55]: Loading './fastlane/metadata/en-US/apple_tv_privacy_policy.txt'...
[hh:21:55]: Loading './fastlane/metadata/ja/description.txt'...
[hh:21:55]: Loading './fastlane/metadata/ja/keywords.txt'...
[hh:21:55]: Loading './fastlane/metadata/ja/release_notes.txt'...
[hh:21:55]: Loading './fastlane/metadata/ja/support_url.txt'...
[hh:21:55]: Loading './fastlane/metadata/ja/marketing_url.txt'...
[hh:21:55]: Loading './fastlane/metadata/ja/promotional_text.txt'...
[hh:21:55]: Loading './fastlane/metadata/ja/name.txt'...
[hh:21:55]: Loading './fastlane/metadata/ja/subtitle.txt'...
[hh:21:55]: Loading './fastlane/metadata/ja/privacy_url.txt'...
[hh:21:55]: Loading './fastlane/metadata/ja/apple_tv_privacy_policy.txt'...
[hh:21:55]: Loading './fastlane/metadata/copyright.txt'...
[hh:21:55]: Loading './fastlane/metadata/primary_category.txt'...
[hh:21:55]: Loading './fastlane/metadata/secondary_category.txt'...
[hh:21:55]: Loading './fastlane/metadata/primary_first_sub_category.txt'...
[hh:21:55]: Loading './fastlane/metadata/primary_second_sub_category.txt'...
[hh:21:55]: Loading './fastlane/metadata/secondary_first_sub_category.txt'...
[hh:21:55]: Loading './fastlane/metadata/secondary_second_sub_category.txt'...
[hh:21:55]: Loading './fastlane/metadata/review_information/first_name.txt'...
[hh:21:55]: Loading './fastlane/metadata/review_information/last_name.txt'...
[hh:21:55]: Loading './fastlane/metadata/review_information/phone_number.txt'...
[hh:21:55]: Loading './fastlane/metadata/review_information/email_address.txt'...
[hh:21:55]: Loading './fastlane/metadata/review_information/demo_user.txt'...
[hh:21:55]: Loading './fastlane/metadata/review_information/demo_password.txt'...
[hh:21:55]: Loading './fastlane/metadata/review_information/notes.txt'...
timeout after 5400 seconds
ちなみに、ビルドが失敗すると通知を飛ばすように設定していたのですが、上記はエラーによる終了ではなく、タイムアウトによる終了であったため、通知を飛ばすというフローに進まず、ビルド失敗に気づけませんでした。

解決方法

結論から言いますと、fastlane のバージョンを2.162.0 以上に上げれば解決します。fastlane はとても多くの人が利用していますので、github のissue を見ると似たような問題が挙がっています。今年の6月に起きたApp Store Connect のAPI の変更によるアップロードできない問題の時も、2,3 日で修正版がリリースされたように、問題が起こったらすぐ報告され、すぐに修正版がリリースされます。

修正対応

Bitrise でfastlane を利用する方法は、以前の投稿で紹介しましたが、そこではBitrise のfastlane ステップを利用するように紹介しました。ここに問題がありました。Xcode 11.3.x, on macOS 10.14.6 (Mojave) のVM では、Bitrise のfastlane ステップで利用できるfastlane のバージョンは、2.144.0 です。最新のXcode 12.2.x, on macOS 10.15.6 (Catalina)でも2.148.0 です。そのため、Bitrise に依存して、Bitrise のfastlane ステップを利用していると問題を解決することができません。

Bitrise のfastlane ステップを使わずにfastlane でビルドをする方法として、script ステップでfastlane をインストールして、そこでfastlane のビルドを行うという方法があります。
bundle install
bundler exec fastlane ios release

最後に

Bitrise はiOS アプリのCI サーバとしてとても良いサービスです。ただ、Bitrise に依存しすぎると問題が起きた時には解決に時間が掛かってしまいます。そのため、Bitrise の依存度を下げるために、fastlane でビルドスクリプトを記述するだけではなく、fastlane 自体も制御しやすいようにすべきと考えます。

 

次世代システム研究室では、グループ全体のインテグレーションを支援してくれるアーキテクトを募集しています。インフラ設計、構築経験者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ募集職種一覧からご応募をお願いします。

皆さんのご応募をお待ちしています。

  • Twitter
  • Facebook
  • はてなブックマークに追加

グループ研究開発本部の最新情報をTwitterで配信中です。ぜひフォローください。

 
  • AI研究開発室
  • 大阪研究開発グループ

関連記事