본문 바로가기

Capacitor 앱을 위한 CI/CD 설정하기

CI/CD 파이프라인으로 iOS 및 Android 앱 출시를 간소화해 효율성을 높이고 오류를 줄이는 방법을 알아보세요.

Capacitor 앱용 CI/CD 설정 Capgo 블로그 일러스트

iOS 및 Android 앱을 더 빠르고 오류 없이 출시하고 싶으신가요? CI/CD 파이프라인: Capacitor apps automate building, testing, and deployment, cutting release times by up to 70% and reducing errors by 60%. This guide covers everything you need to know, from setting up your environment to automating live updates with Capgo.

핵심 요약:

  • CI/CD가 중요한 이유 Capacitor 앱: 빌드 속도를 78% 높이고 스토어 반려율을 60% 줄입니다.
  • 필수 도구: iOS 프로파일링, 디버깅하기, CocoaPods등이 필요합니다.
  • Pipeline 설정: 과 같은 작업을 자동화합니다 npx cap sync, 의존성 캐싱, 플랫폼별 빌드.
  • Capgo를 활용한 Live Update: 단계적 배포 및 롤백 안전장치로 릴리스 후 업데이트를 활성화합니다.

빠른 설정 단계:

  1. 환경 준비: iOS 및 Android에 필요한 도구 설치.
  2. 프로젝트 구성: 업데이트 capacitor.config.ts 및 환경 변수를 안전하게 관리하세요.
  3. Build 파이프라인: 두 플랫폼 모두에 대해 의존성 설치, 빌드, 테스트를 자동화하세요.
  4. 성능 최적화: 캐싱, 병렬 빌드, 조건부 워크플로우를 활용하세요.
  5. Live Updates 추가하기: 안전한 OTA 업데이트와 단계적 롤아웃을 위해 Capgo를 통합하세요.

CI/CD를 사용하면 Capacitor 앱은 오류와 수동 개입을 최소화하면서 더 빠르고 원활하게 릴리스할 수 있습니다. 워크플로우를 최적화할 준비가 되셨나요? 시작해 봅시다!

기존 CI/CD 파이프라인에 모바일 기능 통합하기

CI/CD 환경 준비하기

CI/CD의 기본을 익혔다면, 다음 단계는 환경 설정입니다. 이는 안정적인 자동화의 중추입니다.

도구 및 소프트웨어 설정

다음 핵심 도구들이 설치되어 있는지 확인하세요:

iOS 개발용:

  • Xcode 14 이상
  • Xcode Command Line Tools
  • CocoaPods 의존성 관리용

Android 개발 시:

  • 디버깅하기
  • Android SDK 33 이상
  • Java Development Kit (JDK)

Xcode Command Line Tools 설치 여부를 확인하려면 다음을 실행하세요:

xcode-select -p

생성하기 Capacitor 프로젝트

Capacitor 프레임워크 문서 사이트

Capacitor 프로젝트는 CI/CD 워크플로우를 위해 올바르게 설정되어 있어야 합니다. capacitor.config.ts 파일은 이 설정의 핵심입니다:

const config: CapacitorConfig = {
  appId: 'com.example.app',
  webDir: 'build',
  ios: { 
    scheme: 'MyApp'
  }
}

이 파일은 프로젝트가 CI/CD 요구 사항에 부합하도록 해줍니다.

환경 변수 설정하기

자격 증명을 안전하게 관리하는 것은 환경 설정과 CI/CD 파이프라인을 연결하는 핵심 단계입니다.

정의해야 할 주요 변수:

  • BUILD_ENV: 배포 단계를 지정합니다 (예: production)
  • IOS_SIGNING_IDENTITY: code 서명 인증서
  • ANDROID_KEYSTORE_PATH: Android keystore 경로

Android 빌드의 경우, CI 프로세스 중에 local.properties 파일을 동적으로 생성하세요:

echo "sdk.dir=$ANDROID_SDK_ROOT" > android/local.properties

iOS 빌드 시에는 CI 플랫폼이 macOS 에이전트를 지원하는지 확인해야 합니다.

환경 준비 상태를 확인하려면:

node --version | grep "v16" && xcodebuild -version | grep "Xcode 14" || exit 1

앞서 살펴본 통계에서 언급했듯이, 키와 자격 증명을 제대로 관리하면 앱 스토어에서 거절될 가능성을 크게 낮출 수 있습니다. [1].

CI/CD 파이프라인 만들기

환경 설정이 완료되면 다음 단계는 다음을 위한 CI/CD 파이프라인을 설정하는 것입니다. Capacitor 앱. 이 파이프라인은 웹 자산과 네이티브 플랫폼 빌드를 효율적으로 관리해야 합니다.

의존성 설치 및 업데이트

CI/CD 환경에서는 의존성 관리에 엄격한 버전 관리가 필요합니다. 깨끗한 설치 프로세스로 시작하세요:

npm install --ignore-scripts
npm install @capacitor/cli

빌드 속도를 높이기 위해 의존성 캐싱을 사용하세요. 예를 들어, Azure DevOps 사용자들은 이 설정으로 빌드 시간을 40~60% 단축하는 효과를 보았습니다:

- task: Cache@2
  inputs:
    key: 'npm | "$(Agent.OS)" | package-lock.json'
    path: |
      node_modules
      android/.gradle
      ios/Pods

iOS 및 Android 빌드 설정

두 플랫폼 모두에 대한 빌드 구성 방법은 다음과 같습니다:

iOS 빌드 구성:

steps:
  - task: InstallAppleCertificate@2
    inputs:
      certSecureFile: 'certificate.p12'
      certPwd: $(P12_PASSWORD)
  - script: |
      xcodebuild -workspace ios/App/App.xcworkspace -scheme App -configuration Release -archivePath ios/App/App.xcarchive archive

Android 빌드 설정:

cd android
./gradlew bundleRelease

테스트 및 배포 단계

매트릭스 전략으로 플랫폼 테스트를 병렬 실행합니다:

test:
  steps:
    - run: npm run test:unit
    - run: npm run test:e2e
    - name: Run Platform Tests
      matrix:
        platform: [ios, android]
      run: npm run test:${{ matrix.platform }}

배포를 위해 플랫폼별 아티팩트 처리를 설정합니다:

플랫폼 아티팩트 유형 배포 채널
iOS .ipa App Store Connect
Android .aab Google Play Console

병렬 빌드를 올바르게 구성하면 파이프라인 실행 시간을 크게 단축할 수 있습니다.

빌드가 검증되고 패키징되면 Capgo로 Live Updates를 진행할 준비가 된 것입니다(다음 섹션에서 다룹니다).

sbb-itb-f9944d2

추가하기 Capgo Live Updates용

Capgo Live Update 대시보드 인터페이스

워크플로우에 Capgo를 통합하면 릴리스 후 업데이트가 가능해져 CI/CD 프로세스가 향상됩니다. 설정 방법은 다음과 같습니다:

Capgo 파이프라인 구성

먼저, Capgo CLI 파이프라인 환경에서:

steps:
  - name: Install Capgo CLI
    run: npm install -g @capgo/cli
  - name: Configure Authentication
    env:
      CAPGO_KEY: ${{ secrets.CAPGO_API_KEY }}

이 추가는 CI/CD 라이프사이클에 업데이트 관리 을(를) 자동화된 빌드 및 배포 프로세스에 통합합니다.

다음으로, 빌드 단계 이후 업로드 명령을 포함하세요:

- name: Upload Update
  run: |
    capgo upload --api-key $CAPGO_KEY --bundle ./build/app-release.apk
    capgo deploy v${VERSION} --channel production

대상: 보안 업데이트를, 검증 설정을 다음과 같이 구성하세요:

{
  "verification": {
    "checksum": "strict",
    "certificatePinning": true,
    "updateTimeout": 500
  }
}

Capgo 기능 개요

기능 설명
종단 간 암호화 배포 오류를 크게 줄입니다.
채널 기반 배포 특정 환경에 맞게 업데이트를 조정합니다.
단계적 배포(Phased Rollouts) 업데이트가 점진적으로 배포되도록 보장합니다.

OTA 업데이트 가이드라인

배포 후 다음 핵심 지표를 추적하여 테스트 프로세스를 강화하세요:

단계별 배포 전략

단계적 롤아웃을 사용하여 업데이트 배포를 제어하세요:

- name: Staged Rollout
  run: |
    capgo deploy v1.2.3 --group "beta-users" --rollout 10%
    capgo deploy v1.2.3 --rollout 50%

업데이트 모니터링

다음 지표를 모니터링하세요:

  • 채택률: 첫 24시간 이내에 40~60%를 목표로 하세요.
  • 크래시 없는 세션: 99.5% 이상을 유지하세요.
  • 검증 시간: 500ms 미만으로 유지하세요.

크래시가 허용 수준을 넘으면 롤백을 자동화하세요:

- name: Rollback Check
  run: |
    if [ $(capgo stats --version v1.2.3 --metric crashes) -gt 2 ]; then
      capgo rollback --channel production
    fi

파이프라인 성능 개선하기

세 가지 핵심 영역에 집중하면 파이프라인을 눈에 띄게 개선할 수 있습니다:

빌드 속도 최적화

웹 변경 사항만 있는 경우, npx cap sync 를 사용하면 전체 native rebuild를 건너뛰어 시간을 절약하고 리빌드 시간을 약 40% 단축할 수 있습니다. 조건부 빌드 구현 방법은 다음과 같습니다:

- name: Build Strategy
  run: |
    [ "$WEB_ONLY" = true ] && npx cap sync || (./gradlew assembleRelease && xcodebuild ...)

이 접근 방식은 필요한 컴포넌트만 다시 빌드되도록 보장해 프로세스를 간소화합니다.

버전 관리 자동화

버전 관리를 자동화하면 워크플로우를 간소화할 수 있습니다. 다음 스크립트를 사용해 버전 및 빌드 번호를 동적으로 설정하세요:

- name: Set Version
  run: |
    VERSION=$(node -p "require('./package.json').version")
    BUILD_NUMBER=$GITHUB_RUN_NUMBER
    echo "APP_VERSION=${VERSION}" >> $GITHUB_ENV
    echo "BUILD_ID=${BUILD_NUMBER}" >> $GITHUB_ENV

또한, 이 구성을 통해 자동화된 시맨틱 버전 관리도 설정할 수 있습니다:

{
  "scripts": {
    "version": "standard-version",
    "build:prod": "npm version patch && ionic build --prod"
  }
}

이러한 관행은 다음과 같은 메트릭을 통해 파이프라인 성능을 추적하고 개선하는 데 견고한 프레임워크를 제공합니다:

  • 단계별 빌드 시간
  • 캐시 효율성 (히트/미스 비율)
  • 피크 리소스 사용량

멀티 환경 설정

환경별 구성을 사용하면 여러 환경을 관리하는 것이 단순해집니다. 아래는 예시 설정입니다:

환경 설정 파일
개발 .env.dev
무대 구성 .env.staging
프로덕션 보안 볼트

다음 스크립트로 환경을 동적으로 구성할 수 있습니다:

- name: Configure Environment
  env:
    API_KEY: ${{ secrets.ENV_SPECIFIC_API_KEY }}
    BUNDLE_ID: ${{ parameters.bundleId }}
  run: |
    echo "ENVIRONMENT=${{ parameters.environment }}" >> $GITHUB_ENV
    echo "API_ENDPOINT=${{ parameters.apiUrl }}" >> $GITHUB_ENV

이러한 설정을 Capgo의 채널 기반 배포와 결합하면 환경별로 정밀한 업데이트가 가능합니다. 이를 통해 롤아웃을 더 원활하게 진행하고 다양한 환경에서 앱 동작을 더 효과적으로 제어할 수 있습니다.

요약

개발에서의 CI/CD 역할

Capacitor 앱에 CI/CD 파이프라인을 도입하면 워크플로우 효율성이 크게 향상됩니다. 업계 데이터에 따르면 팀은 다음을 달성할 수 있습니다. 50-70% 더 빠른 릴리스 사이클 iOS와 Android 동시 빌드 덕분에 [3]. 의존성 설치 및 플랫폼 동기화 같은 작업을 자동화하면 배포 오류를 40-60% [1][2].

예를 들어, Azure DevOps 파이프라인을 활용하는 팀은 순차적 빌드 단계 및 Xcode 패키징과 같은 프로세스를 자동화했습니다. 또한 개발 및 운영 환경 모두에 매개변수화된 환경을 사용합니다. 이 방식을 통해 수동 Gradle 및 Xcode CLI 작업이 필요 없어져 매번 신뢰할 수 있는 아티팩트를 생성할 수 있습니다.

이러한 개선 사항은 Capgo와 결합해 간소화된 업데이트 관리를 위한 기반을 마련합니다.

업데이트 관리를 위한 Capgo

Capgo는 CI/CD 파이프라인과 매끄럽게 연동되어 앱 스토어 정책을 준수하면서 즉각적인 업데이트를 제공합니다. 업데이트는 파이프라인에 내장된 자동화 테스트 게이트를 통과한 후에만 배포됩니다.

자동화된 빌드와 단계적 배포를 결합하면 인상적인 결과를 얻을 수 있습니다: 7일 이내 사용자 커버리지 80% 그리고 1시간 이내 롤백 기능.

일반적인 전략은 병렬 배포 트랙을 운영하는 것입니다. 자동화된 빌드는 내부 테스트에, 단계적 배포는 사용자 세그먼트를 대상으로 사용합니다. 덕분에 엄격한 자동화 테스트 게이트를 기반으로 빠르고 안전한 업데이트가 보장됩니다. [1].

자주 묻는 질문

Capacitor 앱을 만드는 방법

Capacitor 앱을 빌드하는 과정은 몇 가지 간단한 단계로 이루어집니다:

  1. 환경 설정: 시스템에 Node.js와 npm를 설치하세요. 그런 다음 Ionic CLI로 Capacitor를 지원하는 새 프로젝트를 시작하세요:

    ionic start myApp tabs --capacitor
  2. 플랫폼 지원 추가: iOS 또는 Android 등 타겟팅할 플랫폼을 추가하세요:

    npx cap add ios
    npx cap add android
  3. 웹 code 동기화: 웹 code가 네이티브 플랫폼과 일치하도록 다음 명령어를 실행하세요:

    npx cap sync

동기화 단계는 여러 플랫폼에서 앱을 일관되게 유지하고 CI/CD 파이프라인에서 원활하게 실행하는 데 중요합니다. 환경 설정에 대한 자세한 내용은 Tools 섹션을 참고하세요.

Capacitor 앱용 CI/CD 설정에서 계속하기

사용 중이라면 Capacitor 앱을 위한 CI/CD 설정하기 CI/CD 자동화를 계획하려면, 다음을 연결하세요 Capgo CI/CD 설정하기 Capgo CI/CD의 제품 워크플로우용, Capgo Native Build Capgo Native Builds의 제품 워크플로우용, Capgo 연동 서비스 Capgo Integrations의 제품 워크플로우용, CI/CD 통합 CI/CD Integration의 구현 세부 사항은, 그리고 GitHub Actions 연동 GitHub Actions Integration의 구현 세부 사항을 참고하세요.

Capacitor 앱용 Live updates

웹 레이어 버그가 라이브 상태라면, 앱 스토어 승인을 며칠씩 기다리지 말고 Capgo를 통해 수정 사항을 배포하세요. 네이티브 변경 사항은 정상 리뷰 절차를 그대로 따르는 반면, 사용자는 백그라운드에서 업데이트를 받습니다.

블로그 최신 글

Capgo는 정말 프로페셔널한 모바일 앱을 만드는 데 필요한 최고의 인사이트를 제공합니다.