
iOS/macOS 앱을 앱스토어에 배포하는 건 언제나 복잡했다. Xcode를 열고 Archive를 하고 Organizer에서 업로드하고, App Store Connect 웹사이트에서 메타데이터를 입력하고, 스크린샷을 올리고… 이 모든 과정이 수작업이다.
App Store Connect CLI는 이 모든 과정을 터미널 하나로 자동화한다. Rudrank Riyam이 Go로 개발한 이 도구는 2,795개 이상의 스타를 받으며 iOS 개발자들의 필수 CI/CD 도구로 자리 잡았다.
핵심 철학은 단순하다: JSON-first, No Interactive Prompts. 스크립트와 파이프라인에서 바로 사용할 수 있도록 설계됐다. 대화형 프롬프트가 없다. 모든 입력은 플래그로, 모든 출력은 JSON 또는 테이블로.
왜 CLI인가?
기존 방식의 문제
| 문제 | 설명 |
|---|---|
| Xcode 의존성 | Archive, 업로드 모두 Xcode 필요 |
| 웹 콘솔 접속 | 메타데이터, 스크린샷은 웹에서 수동 등록 |
| 재현 불가능 | 매번 다른 결과, 버전 관리 불가 |
| CI/CD 연동 어려움 | GUI 기반 워크플로우는 자동화 불가 |
App Store Connect CLI의 접근
| 특징 | 이점 |
|---|---|
| JSON-first | 출력을 jq로 파싱, 다른 도구와 연동 |
| No Prompts | 대화형 입력 없음, 모든 것을 플래그로 |
| 자동 포맷 감지 | TTY면 테이블, 파이프면 JSON |
| Go 바이너리 | 의존성 없는 단일 실행 파일 |
핵심 기능 딥다이브
1. TestFlight 자동화
TestFlight는 베타 테스팅의 핵심이다. CLI로 모든 것을 제어할 수 있다.
피드백 관리:
# 앱별 피드백 목록 (페이지네이션 지원)
asc testflight feedback list --app "123456789" --paginate
크래시 분석:
# 최근 크래시 10개
asc testflight crashes list --app "123456789" --sort -createdDate --limit 10
# 특정 크래시 로그 다운로드
asc testflight crashes log --submission-id "SUBMISSION_ID"
이걸 CI 파이프라인에 넣으면, 매일 아침 크래시 리포트를 슬랙으로 받을 수도 있다.
2. 빌드 업로드 & 관리
IPA 업로드부터 TestFlight 그룹 관리까지.
# IPA 업로드 (altool 대체)
asc builds upload --app "123456789" --ipa "/path/to/MyApp.ipa"
# 빌드 목록
asc builds list --app "123456789" --output table
# TestFlight 그룹 관리
asc testflight groups list --app "123456789" --output table

3. 릴리스 파이프라인
가장 강력한 기능. 전체 릴리스 과정을 하나의 커맨드로.
# Dry-run으로 미리보기 (실제 실행 안 함)
asc release run \
--app "123456789" \
--version "1.2.3" \
--build "BUILD_ID" \
--metadata-dir "./metadata/version/1.2.3" \
--dry-run
# 전체 파이프라인 실행
asc release run \
--app "123456789" \
--version "1.2.3" \
--build "BUILD_ID" \
--metadata-dir "./metadata/version/1.2.3" \
--confirm
# 진행 상황 모니터링
asc status --app "123456789"
메타데이터 디렉토리 구조:
metadata/
└── version/
└── 1.2.3/
├── en-US/
│ ├── title.txt
│ ├── description.txt
│ ├── keywords.txt
│ └── release_notes.txt
└── ko/
├── title.txt
├── description.txt
└── ...
4. 메타데이터 & 로컬라이제이션
앱 정보를 코드로 관리한다. 버전 관리 가능하고, 리뷰도 가능하다.
# 로컬라이제이션 목록
asc localizations list --app "123456789"
# 앱 정보 조회 (JSON)
asc apps info view --app "123456789" --output json --pretty
5. 스크린샷 & 비디오 프리뷰
미디어 자산도 CLI로 관리.
# 스크린샷 목록
asc screenshots list --app "123456789"
# 비디오 프리뷰 목록
asc video-previews list --app "123456789"
6. 인증서 & 프로비저닝
코드 사이닝 자산 관리.
# 인증서 목록
asc certificates list
# 프로비저닝 프로파일
asc profiles list
# 번들 ID
asc bundle-ids list
7. 워크플로우 자동화
재사용 가능한 워크플로우 패턴.
# 워크플로우 검증
asc workflow validate
# Dry-run으로 테스트
asc workflow run --dry-run testflight_beta VERSION:1.2.3
# 실제 실행
asc workflow run testflight_beta VERSION:1.2.3
8. Xcode Cloud 통합
Xcode Cloud도 CLI로 제어.
# PR에서 빌드 트리거
asc xcode-cloud run --workflow-id "WORKFLOW_ID" --pull-request-id "PR_ID"
# 클린 빌드로 재실행
asc xcode-cloud run --source-run-id "BUILD_RUN_ID" --clean
출력 포맷의 마법
CLI는 실행 환경을 자동으로 감지한다.
| 환경 | 출력 포맷 |
|---|---|
| 터미널 (TTY) | 테이블 |
| 파이프/파일/CI | JSON |
전역 설정으로 덮어쓰기:
export ASC_DEFAULT_OUTPUT=markdown
이렇게 하면 어디서든 마크다운 테이블로 출력된다. 문서 생성에 유용하다.
설치 & 인증
설치
Homebrew (권장):
brew install asc
설치 스크립트 (macOS/Linux):
curl -fsSL https://asccli.sh/install | bash
인증
App Store Connect API 키가 필요하다.
asc auth login \
--name "MyApp" \
--key-id "ABC123" \
--issuer-id "DEF456" \
--private-key /path/to/AuthKey.p8
API 키 생성 위치: https://appstoreconnect.apple.com/access/integrations/api
첫 실행
# 앱 목록 확인
asc apps list
Wall of Apps: 홍보 도구
재미있는 기능. 앱을 “Wall of Apps”에 등록할 수 있다.
# 앱 등록
asc apps wall submit --app "1234567890" --platform "iOS,macOS" --confirm
# Dry-run으로 미리보기
asc apps wall submit --app "1234567890" --platform "iOS,macOS" --dry-run
CI/CD 통합 예시
GitHub Actions
name: Deploy to TestFlight
on:
push:
tags:
- 'v*'
jobs:
deploy:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Install asc
run: brew install asc
- name: Auth
run: |
echo "${{ secrets.AUTH_KEY }}" > AuthKey.p8
asc auth login --name "CI" --key-id "${{ secrets.KEY_ID }}" \
--issuer-id "${{ secrets.ISSUER_ID }}" --private-key AuthKey.p8
- name: Upload Build
run: |
asc builds upload --app "${{ secrets.APP_ID }}" --ipa build.ipa
- name: Release
run: |
asc release run --app "${{ secrets.APP_ID }}" \
--version "${{ github.ref_name }}" \
--build "$(asc builds list --app '${{ secrets.APP_ID }}' --output json | jq -r '.[0].id')" \
--metadata-dir "./metadata" \
--confirm
GitLab, Bitrise, CircleCI도 공식 문서에서 지원한다.
Agent Skills 통합
Claude Code, Cursor 같은 AI 에이전트에서도 사용할 수 있다.
Skills 저장소: https://github.com/rudrankriyam/app-store-connect-cli-skills
npx skills add rudrankriyam/app-store-connect-cli-skills
설치하면 AI 에이전트가 App Store Connect 작업을 자동으로 수행할 수 있다.
기술 스택
| 구성요소 | 기술 |
|---|---|
| 언어 | Go |
| API | App Store Connect API (공식) |
| 인증 | JWT (API Key) |
| 출력 | JSON / Table / Markdown |
| 설치 | Homebrew, Shell Script |
마치며: iOS 배포의 새로운 표준
App Store Connect CLI는 단순한 도구가 아니다. iOS/macOS 배포의 패러다임을 바꾼다.
이전에는:
- Xcode Archive → 업로드 → 웹 콘솔에서 메타데이터 입력
- 수작업, 재현 불가능, 실수 가능성 높음
- CI/CD에서 “앱스토어 업로드” 단계가 항상 병목
이제는:
asc builds upload→asc release run→ 끝- 모든 것을 코드로 관리, 버전 관리 가능
- CI/CD 파이프라인에 완벽하게 통합
특히 인상적인 것은 JSON-first 철학이다. 다른 도구와 연동하기 쉽다. jq로 파싱하고, 슬랙으로 알림 보내고, 대시보드 만들고… 가능성이 무한하다.
iOS/macOS 앱을 개발하고 있다면, 오늘 당장 설치해보라. brew install asc. 터미널에서 앱스토어를 정복할 준비가 되어 있다.
🔗 관련 정보
- 공식 사이트: https://asccli.sh
- GitHub: https://github.com/rudrankriyam/app-store-connect-cli
- 개발자: Rudrank Riyam
- Agent Skills: https://github.com/rudrankriyam/app-store-connect-cli-skills
- 스폰서: Rork (https://rork.com/) — AI로 모바일 앱 빌드
- 문서:
- docs/COMMANDS.md — 명령어 가이드
- docs/CI_CD.md — GitHub Actions, GitLab, Bitrise, CircleCI 통합
- docs/WORKFLOWS.md — 재사용 가능한 워크플로우 패턴
- docs/API_NOTES.md — API 특이사항
- 라이선스: MIT