iOS 프로젝트의 CI/CD 파이프라인에서 Fastlane의 match 단계 실행 중, 다음과 같은 Unauthorized Access 에러를 겪었습니다:
Unauthorized Access
Session loaded from environment variable is not valid. Continuing with normal login.
Two-factor Authentication (6 digits code) is enabled for account 'name@gmail.com'
이 문제는 Fastlane의 세션 토큰이 만료되었기 때문입니다.
아래는 이를 해결하기 위해 Fastlane의 spaceauth
명령어를 사용해 새로운 세션을 갱신한 과정을 공유합니다.
문제 원인
Fastlane는 Apple Developer 계정에 로그인하기 위해 세션 토큰을 사용합니다.
이 토큰은 일정 기간 동안 유효하며, 만료되면 더 이상 인증이 이루어지지 않습니다.
CI/CD 환경에서는 세션 토큰이 만료되면 작업이 중단되고, 2단계 인증(2FA)을 다시 요구하게 됩니다.
해결 방법: 세션 갱신
1. 세션 갱신 명령어 실행
Fastlane의 spaceauth
명령어를 사용해 새로운 세션을 생성합니다.
이 명령어는 특정 Apple ID를 지정하여 실행할 수 있습니다:
fastlane spaceauth -u name@gmail.com
실행 과정
- Apple ID 인증:
명령어를 실행한 후, 요청된 Apple ID 자격 증명을 입력합니다. - 2단계 인증(2FA):
등록된 기기나 SMS로 받은 6자리 코드를 입력합니다. - 새로운 세션 생성:
인증이 완료되면 Fastlane가 새로운 세션 토큰을 생성합니다.
결과적으로 다음과 같은 메시지가 출력됩니다:
Successfully logged in and stored the session.
Please set the FASTLANE_SESSION environment variable to:
<session_token>
2. 세션 토큰 CI 환경 변수에 설정
생성된 세션 토큰을 CI 환경 변수로 추가해야 합니다.
GitLab CI 환경 변수 설정:
- GitLab 프로젝트로 이동:
Settings > CI/CD > Variables
로 이동합니다. - 환경 변수 추가:
- Key:
FASTLANE_SESSION
- Value:
<session_token>
(위에서 생성된 토큰)
- Key:
저장 후 CI 파이프라인에서 세션 토큰을 자동으로 사용할 수 있습니다.
3. 파이프라인 실행 확인
세션 갱신 후, GitLab에서 CI/CD 파이프라인을 다시 실행합니다.
정상적으로 작동하는 경우, 로그에서 다음 메시지를 확인할 수 있습니다:
[16:53:00]: 🔓 Successfully decrypted certificates repo
[16:53:00]: Verifying that the certificate and profile are still valid on the Dev Portal...
결론
fastlane spaceauth -u
명령어는 Fastlane의 세션 갱신을 간단히 해결할 수 있는 강력한 도구입니다.
이 과정을 통해 Unauthorized Access 문제를 해결했으며, 다음과 같은 점을 유의하세요:
- Fastlane 세션은 만료될 수 있으니 정기적으로 갱신해야 합니다.
- CI/CD 환경에서
FASTLANE_SESSION
변수를 활용해 세션 만료 문제를 예방할 수 있습니다. - 최신 Fastlane 버전을 유지해 Apple 인증 관련 문제를 최소화하세요.
'iOS' 카테고리의 다른 글
Swift에서 가독성 높은 Logger 클래스 만들기 (0) | 2024.11.10 |
---|---|
Swift에서 Data를 객체로 유연하게 변환하기 (0) | 2024.11.08 |