main브랜치 push → 자동 빌드 → Google Play / App Store 제출까지
직접 삽질하며 정리한 세팅 방법을 공유합니다.
매번 수동으로 빌드하고 스토어에 올리는 과정이 번거로워 Codemagic으로 CI/CD 파이프라인을 구축하게 되었습니다.
세팅하면서 꽤 많은 에러를 만났는데, 같은 시행착오를 겪을 분들을 위해 최대한 자세히 정리했습니다.
main push
→ Codemagic 자동 빌드
→ 스토어 심사 제출
→ 심사 통과 후 배포 당일 수동 태그 push
→ GitHub Release Notes 자동 생성
대시보드 방식 대신 codemagic.yaml을 레포에 포함시키면 버전 관리가 가능하고 팀원과 설정을 공유하기 편합니다.
두 워크플로우는 트리거 조건이 달라 동시에 실행되지 않습니다.
workflows:
submit-to-stores: # main 브랜치 push 시에만 실행
create-release-notes: # release/* 태그 push 시에만 실행
Distribution 탭에 keystore를 등록한 뒤 yaml에서 참조합니다.
android_signing:
- upload-keystore.jks
Distribution 탭 설정과 자동 연동됩니다.
ios_signing:
distribution_type: app_store
bundle_identifier: com.example.yourapp
app_store_connect:
submit_to_app_store: true
whats_new:
ko: "일부 버그를 수정하고 전반적인 사용 편의성을 개선했습니다."
en-US: "Bug fixes and general improvements."
uses_non_exempt_encryption: false
환경변수 그룹 없이 Distribution 탭에서 대부분을 처리할 수 있습니다.
| 항목 | 설정 위치 |
|---|---|
| Android keystore | Distribution > Android code signing |
| iOS certificate / provisioning | Distribution > iOS code signing |
| App Store Connect API key | Distribution > App Store Connect |
| Google Play service account | Distribution > Google Play |
Distribution에 등록하면
$GCLOUD_SERVICE_ACCOUNT_CREDENTIALS등 환경변수가 자동으로 주입됩니다.
별도로 필요한 환경변수는 github_credentials 그룹 하나뿐입니다.
| 변수명 | 값 |
|---|---|
GITHUB_TOKEN | GitHub PAT (repo 권한) |
GITHUB_OWNER | 조직 또는 유저명 |
GITHUB_REPO | 레포명 |
GitHub PAT 발급 경로
GitHub > Settings > Developer settings > Personal access tokens > Tokens (classic) > repo 체크
처음 세팅할 때 가장 많이 헤맸던 부분입니다.
예전에는 Google Play Console 내에서 직접 API 키를 발급할 수 있었지만, 현재는 해당 메뉴가 제거되었습니다. 검색하면 여전히 옛날 방식으로 설명한 블로그가 많아 헤매기 쉽습니다.
현재는 반드시 아래 순서로만 진행해야 합니다.
1. Google Cloud Console에서 서비스 계정 생성 + JSON 키 발급
2. Google Play Console에서 해당 서비스 계정에 권한 연결
.json 파일 다운로드 → 이 파일이 Codemagic에 등록할 크리덴셜 키입니다.Cloud 프로젝트와 Play Console이 연결되어 있지 않으면 서비스 계정 목록 자체가 표시되지 않습니다.
.json 파일 업로드등록 후 yaml에서 별도 환경변수 없이 자동으로 연동됩니다.
| 실수 | 결과 |
|---|---|
| Play Console 권한 부여를 빠뜨림 | 권한 에러 발생 |
| Cloud-Play Console 연결 전 서비스 계정 연결 시도 | 서비스 계정 목록이 안 보임 |
| 옛날 블로그 따라 Play Console에서 직접 API 키 발급 시도 | 메뉴 자체가 없음 |
날짜 기반 태그를 사용합니다: release/yymmdd
앱 심사에 보통 1~3일이 소요되기 때문에 빌드 시점과 실제 배포일이 달라집니다. 아래 방식으로 해결했습니다.
main push 시 빌드 자동 실행 (심사 제출)git tag release/260314
git push origin release/260314
태그를 push하면 이전 태그 이후의 커밋 메시지를 기반으로 GitHub Release Notes가 자동 생성됩니다.
공식 문서만으로는 원인을 파악하기 어려웠던 에러들을 정리했습니다.
Given final block not properly paddedFeedback Email requiredApp Store Connect > TestFlight > Test Information에서 피드백 이메일 등록whatsNew attribute requiredwhats_new 항목 누락whats_new:
ko: "일부 버그를 수정하고 전반적인 사용 편의성을 개선했습니다."
en-US: "Bug fixes and general improvements."
uses non exempt encryptionuses_non_exempt_encryption: false
처음 세팅할 때는 에러 메시지 하나하나가 낯설어서 시간이 꽤 걸렸지만, 한 번 구축해두니 배포 부담이 크게 줄었습니다.
특히 codemagic.yaml을 레포에서 관리하는 방식은 팀 프로젝트에서 설정을 공유하고 히스토리를 추적하는 데 매우 유용했습니다.
비슷한 세팅을 준비 중이시라면 도움이 되길 바랍니다. 🚀