네이티브 iOS · 야간 빌드
Git 푸시로 archive를 만들고, 업로드는 fastlane에 맡기세요.
클라우드 Mac을 GitHub Actions self-hosted runner, GitLab Runner 또는 Jenkins agent로 등록하세요. 릴리스 브랜치에 푸시되면 고정된 커밋을 체크아웃한 뒤 Release archive와 IPA를 생성합니다. TestFlight 업로드는 별도 단계로 실행해 빌드 실패와 업로드 실패를 각각 재시도할 수 있습니다.
먼저 준비할 항목 3가지
- 다음을 설정하세요:
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 통합 메모리는 여러 타깃을 일상적으로 빌드하기에 적합합니다. 먼저 순차 실행으로 워크플로를 안정화한 뒤 메모리 압력과 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"