fastlane で Simulator 向けのビルドを行い、Bitrise の step で成果物を利用する方法
前提と 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 はガッツリ触ったことがあるわけではないので、もしもっと良い方法など知っている方がいらっしゃれば教えていただけると嬉しいです🙏
参照
- fastlane
- StackOverflow
- Bitrise
Discussion