Published on

React Native 11장: CI/CD 자동 빌드와 OTA 배포 전략

[11장] CI/CD 자동 빌드 & OTA 배포 전략


1. CI/CD란?

용어설명
CI (Continuous Integration)코드 병합 시 자동 테스트/검사
CD (Continuous Delivery/Deployment)자동 빌드 및 마켓 업로드 or OTA 푸시

📌 목표: 매일 안정된 코드를 자동으로 빌드하고 배포하는 시스템 구축


2. Expo EAS Build 소개

EAS (Expo Application Services)는 Expo의 공식 빌드/배포 서비스

→ 로컬 환경 없이 서버에서 빌드, 앱스토어에 업로드 가능

설치

npm install -g eas-cli
eas login

초기화

eas build:configure

.eas.json 생성됨 → 플랫폼별 빌드 설정


3. 빌드 실행

eas build --platform android
eas build --platform ios
  • Android: .aab 파일 생성 (Play Store 업로드용)
  • iOS: .ipa 파일 생성 (Apple 심사용)

iOS는 Apple 개발자 계정 및 배포 인증서 연결 필수


4. OTA 배포 (expo publish)

eas update --branch production
  • 앱 코드(JS/TS, asset)만 업데이트됨
  • 앱을 다시 빌드하지 않아도 버그 수정, 텍스트 변경, UI 조정 가능

📌 단, 네이티브 코드 변경 포함 시 빌드 필수


5. 환경변수 (.env) 처리

npm install react-native-dotenv
  • EAS_SECRET_* 변수는 서버에 등록 후 사용할 수 있음
  • 예: API URL, 키, 모드 전환 등

.env

API_URL=https://api.example.com
import { API_URL } from '@env';

6. GitHub Actions로 자동화

# .github/workflows/eas-build.yml
name: EAS Build Android

on:
  push:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: expo/expo-github-action@v7
        with:
          eas-version: latest
      - run: eas build --platform android --non-interactive
  • push 시 자동으로 Android 빌드 실행
  • 슬랙, 텔레그램 연동도 가능

7. 앱스토어 & 플레이스토어 자동 업로드 (선택)

  • Android: fastlane supply로 Play Console에 자동 업로드
  • iOS: fastlane deliver로 TestFlight/심사 제출 자동화
  • 인증서/계정 연동은 초반에 어렵지만 장기적으로 매우 효율적

요약

  • Expo EAS로 로컬 환경 없이 서버 빌드 가능
  • OTA 업데이트로 JS 코드만 빠르게 배포 가능
  • CI/CD 구축은 초기 설정만 하면 팀 전체 생산성이 대폭 향상됨
  • GitHub Actions + EAS + 환경변수 분리로 완전 자동화 가능

심화학습

Q1. OTA로 업데이트되면 사용자가 앱을 다시 설치하지 않아도 되나요?
A1. 맞다. eas update는 JS 번들만 바뀌므로 앱스토어 재심사 없이 자동 적용된다. 다만 사용자가 앱을 켜야 적용됨.


Q2. 빌드 자동화 시 인증서 보안 문제는 어떻게 해결하나요?
A2. eas credentials로 로컬이 아닌 Expo 서버에 안전하게 인증서를 저장하고, CI에서 호출해 사용하면 된다.


Q3. OTA와 앱스토어 배포는 언제 나눠서 써야 하나요?
A3. UI, 텍스트, 버그 수정 → OTA / 새 SDK 버전, 네이티브 모듈 추가 → 빌드 + 앱스토어 배포