fastlane TestFlight 업로드 인증을 App Store Connect API Key로 전환
Jenkins에서 fastlane으로 TestFlight에 .ipa를 업로드하려면 App Store Connect 인증이 필요하다. 처음에는 Apple ID/Password 방식을 썼다. 설정은 간단하지만 2단계 인증(2FA)을 거쳐야 한다.
2FA를 매번 하지 않으려고 fastlane spaceauth로 발급한 세션을 빌드 머신에 저장해 두고 재사용했다. 세션 값을 FASTLANE_SESSION 환경변수로 워크스페이스의 .env에 넣는 방식이다.
echo "export FASTLANE_SESSION=$(pbpaste)" >> ${workspace}/.env처음에는 ~/.zshrc에 넣었다가 워크스페이스 .env로 옮겼다. 2FA 세션은 한 달에 한 번 정도 갱신하면 된다고 보고, 우선 매번 세션을 요청해 갱신하면서 문제가 없으면 한 달마다 갱신하는 주기 job을 추가할 계획이었다.
세션이 예상한 한 달을 채우지 못했다. Apple 보안 정책에 의한 불시 만료와 빌드 머신의 백신·보안 정책 때문에 세션이 비주기적으로 만료됐고, 업로드가 아래 오류로 실패했다.
Available session is not valid anymoreID/Password 방식은 사람이 개입하는 인터랙티브 로그인이라 CI와 맞지 않는다. 그래서 세션 갱신 주기를 조정하지 않고 App Store Connect API Key 인증으로 바꿨다.
변경 내용은 TestFlight 빌드·배포 절차 문서에 반영했다.