ci(cd-qa): iOS 빌드를 Firebase App Distribution 에도 배포 - #167
Open
imhyunho99 wants to merge 1 commit into
Open
Conversation
TestFlight requires every tester to hold an App Store Connect team seat, which only the Account Holder or an Admin can grant. That blocks testers we cannot add to the team. This adds a second destination for the same build. It reuses the archive rather than building again — exportArchive re-signs with whichever profile it is handed, so the ad-hoc IPA costs one export instead of another 20-minute job. The whole branch is skipped unless both IOS_ADHOC_PROFILE_BASE64 and FIREBASE_IOS_APP_ID are set, so this is a no-op until someone supplies them and the existing TestFlight path is untouched either way. The catch is ad-hoc itself: a device only installs if its UDID is baked into the profile. Adding a tester means registering the UDID, reissuing the profile, and updating the secret. TestFlight has no such limit — this is the trade for not needing team seats. The import step logs how many devices the profile carries, because "it won't install" is almost always a missing UDID and that number answers it without a rebuild. FIREBASE_IOS_APP_ID is 1:513269758316:ios:66fdd942934a6d90391b49, read from ios/GoogleService-Info.plist — the same Firebase project (f9689) the Android app already reports to. Not yet runnable: the two secrets do not exist yet. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TestFlight 는 테스터마다 App Store Connect 팀 자리가 필요하고, 그 자리는 Account Holder / Admin 만 줄 수 있습니다. 팀에 넣을 수 없는 테스터에게는 iOS 빌드를 전달할 방법이 없어서, 같은 빌드를 Firebase 로도 보냅니다.
어떻게
아카이브를 다시 만들지 않습니다.
exportArchive는 넘겨준 프로파일로 다시 서명하므로, TestFlight 용으로 이미 뜬.xcarchive를 재사용해 ad-hoc 으로 한 번 더 export 합니다. 20분짜리 잡이 하나 더 생기는 대신 export 한 번 값만 늘어납니다.지금 머지해도 아무 일도 일어나지 않습니다
IOS_ADHOC_PROFILE_BASE64와FIREBASE_IOS_APP_ID가 둘 다 있을 때만 동작합니다. 없으면 세 단계를 건너뛰고 notice 만 남깁니다. TestFlight 경로는 어느 쪽이든 영향받지 않습니다.머지 후 필요한 것
FIREBASE_IOS_APP_ID1:513269758316:ios:66fdd942934a6d90391b49IOS_ADHOC_PROFILE_BASE64base64 -i AdHoc.mobileprovisionApp ID 는
ios/GoogleService-Info.plist에서 읽었습니다. Android 가 이미 보고하고 있는 프로젝트(cocktail-f9689)와 같습니다.Ad Hoc 프로파일은 Apple Developer 포털에서 만들어야 합니다 — 테스터 기기 UDID 등록 → Profiles → Ad Hoc → 지금 쓰는 배포 인증서 선택.
알고 계셔야 할 비용
ad-hoc 은 기기 UDID 가 프로파일에 박혀 있어야만 설치됩니다. 테스터가 늘 때마다 UDID 등록 → 프로파일 재발급 → 시크릿 갱신 → 재빌드가 필요하고, 연 100대 한도가 있습니다. TestFlight 에는 없는 제약이고, 이게 팀 자리를 안 주는 대가입니다.
"설치가 안 된다"는 문의는 거의 항상 UDID 누락이라, 프로파일 import 단계에서 등록된 기기 수를 로그로 남기게 해뒀습니다. 재빌드 없이 로그만 보고 판별됩니다.
곁가지로 확인된 것
ios/Cocktail_Front/GoogleService-Info.plist는 다른 Firebase 프로젝트(cocktail-e311f, 프로젝트 번호 265741208176)를 가리키는 쓰이지 않는 파일입니다. Xcode 타깃에 들어가는 건ios/GoogleService-Info.plist쪽입니다. 누가 실수로 타깃에 추가하면 iOS 만 조용히 죽은 프로젝트로 보고하게 되니 지우는 편이 낫습니다. 이 PR 범위 밖이라 건드리지 않았습니다.검증
로컬에서 YAML 파싱과 스텝 순서만 확인했습니다. 시크릿이 없어 실제 실행은 못 해봤습니다.