🛬

fastlane で Simulator 向けのビルドを行い、Bitrise の step で成果物を利用する方法

2021/08/07に公開

前提と Simulator 向けのビルドを行いたかったモチベーション

前提

この記事は fastlane は既に導入されており、Bitrise の step で fastlane step を利用するという状況を想定しています。

fastlane で Simulator 向けのビルドを行いたかったモチベーション

今回自分は Magic Pod という、アプリの UI テストを自動化できるツールを使おうとしていました。
Magic Pod は Simulator 用にビルドされたアプリを必要とするため、Bitrise で Simulator 用にアプリをビルドし、Bitrise の Magic Pod step でその成果物を利用する必要がありました。

Bitrise には「Xcode build for simulator」という step が存在しています。
最初はそれを使用して Simulator 向けにビルドを行おうとしていたのですが、こちらと同様の問題が発生し、「Xcode build for simulator」でビルドしたアプリだと Magic Pod で使用することができなかったため、fastlane で Simulator 向けにビルドをしようと思いました。

Fastfile の用意

fastlane は導入されているという前提なので、Fastfile に Simulator 向けビルド用の lane を追加して、それを CI サービスなどで利用するようにすればやりたいことは達成できます。

具体的には、以下のような Fastfile を用意します。

default_platform(:ios)

platform :ios do
  desc "xcodebuild for simulator"
  lane :xcodebuild_for_simulator do
    app_dir_path = "./AppDirPath"

    build_app(
      workspace: ENV["BITRISE_PROJECT_PATH"],
      scheme: ENV["BITRISE_SCHEME"],
      configuration: ENV["CONFIGURATION_NAME"],
      derived_data_path: app_dir_path,
      skip_package_ipa: true,
      skip_archive: true,
      destination: "generic/platform=iOS Simulator"
    )

    Dir.chdir("..") do
      app_file_path = sh("find", app_dir_path, "-name", "*.app", "-type", "d").strip()
      sh("envman", "add", "--key", "APP_FILE_PATH", "--value", app_file_path)
    end
  end
end

上記の Fastfile でやっていることは以下のようになります。

  • build_app を用いて、Simulator 向けにアプリを app_dir_path という path を指定してビルド
  • 後続の Bitrise の step などでビルドしたアプリを利用できるように、ビルドされたアプリの path を環境変数に追加

あとはこの環境変数を CI サービス(自分の場合は Bitrise )で利用して、Magic Pod で利用するようにすれば、正常にビルドしたアプリを用いて Magic Pod でのテストを進めることができます。

fastlane はガッツリ触ったことがあるわけではないので、もしもっと良い方法など知っている方がいらっしゃれば教えていただけると嬉しいです🙏

参照

Discussion