% bundle init
% echo 'gem "fastlane"' >> Gemfile
% bundle install
% fastlane init

[22:17:37]: What would you like to use fastlane for?
1. 📸  Automate screenshots
2. 👩‍✈️  Automate beta distribution to TestFlight
3. 🚀  Automate App Store distribution
4. 🛠  Manual setup - manually setup your project to automate your tasks
?  2

# 他にもいくつかの情報を入力

# fastlane/Appfile
# fastlane/Fastfile
# の2ファイルが作られる

Appfileはチームの情報などが入っています。Fastfileは実行したいタスクの内容が記述されています。おそらく次のようになっているはず。

default_platform(:ios)

platform :ios do
  desc "Push a new beta build to TestFlight"
  lane :beta do
    build_app(workspace: "my-project.xcworkspace", scheme: "my-project")
    upload_to_testflight
  end
end

ちなみに僕はbuild_appの前にincrement_build_numberを入れました。うっかり同じビルド番号で上げてしまうとエラーになって面倒だからです。

lane :beta do
  increment_build_number # <= これを追加
  build_app(workspace: "my-project.xcworkspace", scheme: "my-project")
  upload_to_testflight
end

ちなみにincrement_build_numberを動かすために、Apple GenericなVersioningにする必要があります。

あとはコマンドラインで% fastlane betaと叩くと実行されます。

これでAppStoreConnectにビルドが登録されて、あとは輸出コンプライアンスをチェックすれば内部テスターに配布されるところまではいけました。このプロジェクトはまだ外部テスター向けのレビューが通っていないのでその先までは検証できていないです。

ホントは輸出コンプライアンスのチェックもパスできるといいんけど、その操作はできないようです。でも、Xcodeで操作すると待って操作して待って操作してになってしまうから、それに比べたらだいぶいいですね。