ネイティブiOS · 夜間ビルド
Gitへのpushでarchiveを作成し、アップロードはfastlaneで実行
クラウドMacをGitHub Actionsのself-hosted runner、GitLab Runner、またはJenkins agentとして登録します。リリースブランチへのpush後、固定したコミットをチェックアウトし、Release archiveとIPAを生成します。TestFlightへのアップロードは別工程にすることで、ビルド失敗とアップロード失敗を分けて再実行できます。
事前に準備するもの
- 次の環境変数を設定します。
WORKSPACE、SCHEME、EXPORT_OPTIONSを、それぞれワークスペース、共有scheme、エクスポート設定に指定します。 - 署名証明書とプロビジョニングプロファイルを、現在のビルドユーザーに設定します。fastlane matchで管理し、復号用の認証情報はCIのシークレットから渡せます。
- 次の環境変数を設定します。
ASC_API_KEY_JSONには、fastlaneで使用するApp Store Connect APIキーのJSONファイルを指定します。キーをコードリポジトリに保存しないでください。
成果物の確認ポイント
次の成果物を確認します。 build/App.xcarchive、エクスポートしたIPA、コミット識別子、Xcodeのバージョンを保存します。該当バージョンがTestFlightに届いたことを確認してください。ビルドコマンドが正常終了しても、アップロード完了とは限りません。
この構成を選ぶ理由:Host M4 Plusは24GBのユニファイドメモリを搭載し、複数targetの日常的なビルドに適しています。まずは逐次実行で動作を確認し、メモリ負荷とDerivedDataの使用量を見てから並列数を増やしましょう。
set -euo pipefail
: "${WORKSPACE:?Set WORKSPACE}"
: "${SCHEME:?Set SCHEME}"
: "${EXPORT_OPTIONS:?Set EXPORT_OPTIONS}"
: "${ASC_API_KEY_JSON:?Set ASC_API_KEY_JSON}"
mkdir -p build
xcodebuild -version
xcodebuild \
-workspace "$WORKSPACE" -scheme "$SCHEME" \
-configuration Release \
-destination 'generic/platform=iOS' \
-archivePath build/App.xcarchive archive
xcodebuild -exportArchive \
-archivePath build/App.xcarchive \
-exportPath build/export \
-exportOptionsPlist "$EXPORT_OPTIONS"
IPA_PATH="$(find build/export -type f -name '*.ipa' -print -quit)"
test -n "$IPA_PATH"
bundle exec fastlane pilot upload \
--ipa "$IPA_PATH" \
--api_key_path "$ASC_API_KEY_JSON"