Skip to content

[FIX] TestFlight 배포 codesign 무한 대기 해결 - #112

Merged
khyeji98 merged 1 commit into
mainfrom
fix/ci-keychain-hang
Jul 15, 2026
Merged

[FIX] TestFlight 배포 codesign 무한 대기 해결#112
khyeji98 merged 1 commit into
mainfrom
fix/ci-keychain-hang

Conversation

@khyeji98

Copy link
Copy Markdown
Collaborator

변경 사항

TestFlight 배포가 Deploy to TestFlight 스텝에서 2시간 매달리던 문제를 해결합니다. (문제 발생 run)

원인은 세 단계로 이어졌습니다.

  1. Prepare keychainsecurity create-keychain ... login.keychain-db || true로 실행되는데, 러너에는 login.keychain-db가 이미 존재합니다. A keychain with the same name already exists 실패를 || true가 삼켜서, 의도한 "MATCH_KEYCHAIN_PASSWORD로 잠긴 새 키체인"이 아니라 러너 기본 비밀번호로 잠긴 기존 키체인이 그대로 쓰였습니다.

  2. 그 결과 match의 set-key-partition-list가 비밀번호 불일치로 실패했습니다. 이 설정이 codesign의 GUI 승인 팝업을 막아주는 장치인데, fastlane은 경고만 내고 진행하기 때문에 잡이 실패하지 않고 빌드까지 갔습니다.

    security: SecKeychainItemSetAccessWithPassword: The user name or passphrase you entered is not correct.
    Could not configure imported keychain item (certificate) to prevent UI permission popup when code signing
    
  3. 빌드 중 codesign이 헤드리스 러너에서 뜰 수 없는 팝업을 기다리며 무한 대기했습니다. 취소 시점에 codesign 프로세스 3개가 orphan으로 남아 있었습니다.

변경 내용은 다음과 같습니다.

  • 러너의 기존 login 키체인 대신 전용 build.keychain을 새로 만들어 사용합니다. MATCH_KEYCHAIN_NAME 환경변수로 주입하며, Matchfile은 이 값을 참조하되 없으면 기존처럼 login으로 폴백해 로컬 match_development는 영향받지 않습니다.
  • 키체인 생성 실패를 삼키던 || true를 제거했습니다. 이제 실패가 조용히 넘어가지 않고 잡이 그 자리에서 멈춥니다.
  • deploy 잡에 timeout-minutes: 60을 추가했습니다.

To Reviewer

  • 머지 전 workflow_dispatch로 이 브랜치에서 실제 배포를 돌려 검증했습니다. (검증 run)
  • security list-keychainslogin.keychain-db를 함께 남겨두었습니다. 검색 목록에서 빠지면 xcodebuild가 시스템 인증서를 찾지 못할 수 있기 때문입니다.
  • timeout-minutes를 추가한 이유는 concurrency 그룹이 cancel-in-progress: false여서, 멈춘 잡 하나가 이후 배포를 전부 막기 때문입니다.
  • 급한 배포는 로컬에서 fastlane beta로 먼저 처리해 **1.0.0 (build 2)**가 TestFlight에 올라가 있습니다. 로컬은 login 키체인 비밀번호가 일치해 같은 문제가 재현되지 않았고, 이는 이번 진단과도 일치합니다.

러너에 이미 있는 login 키체인을 재사용하면서 비밀번호가 불일치해
match 의 set-key-partition-list 가 실패했고, codesign 이 헤드리스
환경에서 뜰 수 없는 승인 팝업을 기다리며 2시간 멈춤

전용 build.keychain 을 새로 만들어 쓰도록 변경하고, 키체인 생성
실패를 삼키던 || true 제거. 잡에 timeout-minutes 상한 추가
@khyeji98 khyeji98 self-assigned this Jul 15, 2026
@khyeji98
khyeji98 merged commit 547d069 into main Jul 15, 2026
1 check passed
@khyeji98
khyeji98 deleted the fix/ci-keychain-hang branch July 15, 2026 04:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant