pile·
모바일·플레이키보드플레이키보드·

[iOS] 두려움 없이 fastlane, CircleCI 도입하기

플레이키보드 iOS팀이 수동 배포의 반복 비용(420회 빌드 × 30분 = 210시간 낭비)을 줄이기 위해 fastlane과 CircleCI를 도입한 과정을 다룬다. 인증서 관리부터 TestFlight 업로드까지 전 단계를 자동화했다.

핵심 포인트
  • 수동 배포 420회 기준 약 210시간 낭비 → CI/CD 도입의 직접적 동기다.
  • fastlane으로 빌드·서명·TestFlight 업로드·Slack 알림을 단일 lane으로 자동화한다.
  • Match를 별도 GitHub 저장소에 연결해 인증서를 팀 전체가 중앙 관리한다.
  • CircleCI의 develop 브랜치 push 이벤트를 트리거로 fastlane lane을 자동 실행한다.
  • 앱스토어 커넥트 API 키를 base64로 인코딩해 이중 인증 없이 자동 배포 가능하게 했다.
상세 정리
  • 문제 인식: iOS 빌드를 수동으로 처리하며 420회 빌드에서 회당 30분씩 총 210시간이 단순 반복 작업에 소비됐다.
  • 도구 선택: fastlane(빌드·사이닝·업로드 자동화)과 CircleCI(원격 트리거)의 조합으로 결정했다.
  • fastlane 설치: `brew install fastlane`, `gem install bundler`, `fastlane init`으로 프로젝트 초기화.
  • 보안 처리: 애플 계정, Match 비밀번호, API 키를 `.env`에 저장하고 `.gitignore`에 추가해 외부 노출을 차단했다.
  • 앱스토어 커넥트 API: 이중 인증 우회를 위해 API 키를 생성 후 base64 인코딩해 환경변수로 관리한다.
  • Match 코드 사이닝: 인증서를 전용 GitHub 저장소에 저장하고 `sync_code_signing` 액션으로 팀원 누구나 동일 인증서를 사용하게 했다.
  • Fastfile 구성: CocoaPods 설치 → 빌드 번호 자동 증가 → 빌드 및 TestFlight 업로드 → Slack 알림 순서로 lane을 구성했다.
  • CircleCI 연동: SSH 키와 환경변수를 등록하고 `.circleci/config.yml`에서 develop 브랜치 push를 트리거로 fastlane lane을 실행한다.
  • 성과: 자동화로 반복 작업 피로도를 줄이고 절약된 시간을 제품 개선에 투자할 수 있게 됐다. 향후 테스트 자동화 확장 기반도 마련됐다.
왜 읽나iOS 팀이 fastlane+CircleCI로 수동 배포를 자동화하는 단계별 설정을 실제 경험 기반으로 설명하므로, CI/CD 도입을 처음 고려하는 iOS 개발자에게 실전 레퍼런스가 된다.
플레이키보드
플레이키보드 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 모바일·당근당근 테크블로그·

    웹뷰 다음의 레일을 깔다: 당근이 Lynx를 선택한 이유

    당근 프론트엔드코어팀이 WebView 기반 화면의 첫 프레임 렌더링 문제를 해결하기 위해 Lynx를 도입한 기록이다. 레퍼런스가 거의 없는 기술을 코드베이스 직접 분석으로 검증한 뒤 프로덕션에 적용했고, 1.9백만 사용자 A/B에서 Android 18%, iOS 37%의 첫 프레임 단축을 달성했다.

    요약 이어보기
    #cross-platform#webview#mobile-performance+2
  2. 모바일·토스 SLASH토스 SLASH·

    토스의 디바이스 팜 만들기

    토스가 각 팀이 각자 운영하던 작은 디바이스 팜을 하나의 중앙 플랫폼 '네뷸라(Nebula)'로 통합한 과정을 다룬다. Appium 대신 자체 드라이버를 개발해 클릭 13.5배, 텍스트 입력 10배의 성능을 달성했고, Android와 iOS 미러링도 직접 내재화해 실기기 원격 조작과 화면 실시간 공유를 동시에 가능하게 만들었다. 현재 100대를 넘어 수백 대를 향해 24시간 가동 중이다.

    요약 이어보기
    #android#ios#appium+2