본문으로 건너뛰기

App Store Connect CLI: iOS/macOS 배포를 터미널에서 완전 자동화

정석

App Store Connect CLI

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

App Store CLI

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)테이블
파이프/파일/CIJSON

전역 설정으로 덮어쓰기:

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
APIApp Store Connect API (공식)
인증JWT (API Key)
출력JSON / Table / Markdown
설치Homebrew, Shell Script

마치며: iOS 배포의 새로운 표준

App Store Connect CLI는 단순한 도구가 아니다. iOS/macOS 배포의 패러다임을 바꾼다.

이전에는:

이제는:

특히 인상적인 것은 JSON-first 철학이다. 다른 도구와 연동하기 쉽다. jq로 파싱하고, 슬랙으로 알림 보내고, 대시보드 만들고… 가능성이 무한하다.

iOS/macOS 앱을 개발하고 있다면, 오늘 당장 설치해보라. brew install asc. 터미널에서 앱스토어를 정복할 준비가 되어 있다.


🔗 관련 정보

이전
Clawhip: 게이트웨이 세션을 우회하는 이벤트-채널 알림 라우터
다음
Recall: Claude/Codex 대화 전체 검색 및 재개 — 잊어버린 대화를 찾아서