CI-CD와 EAS Build — 자동화된 빌드와 배포
EAS(Expo Application Services)는 클라우드에서 iOS/Android 앱을 빌드하고 스토어에 제출하는 서비스입니다.
로컬에서 빌드하면 Mac이 필요하고 환경 설정이 복잡합니다. EAS Build는 이 과정을 클라우드에서 자동화합니다.
EAS Build 설정
# EAS CLI 설치
npm install -g eas-cli
eas login
# 프로젝트 설정
eas build:configure
// eas.json
{
"build": {
"development": {
"developmentClient": true,
"distribution": "internal",
"ios": { "simulator": true }
},
"preview": {
"distribution": "internal",
"android": { "buildType": "apk" }
},
"production": {
"autoIncrement": true
}
},
"submit": {
"production": {
"ios": { "appleId": "your@email.com", "ascAppId": "1234567890" },
"android": { "serviceAccountKeyPath": "./google-sa-key.json" }
}
}
}
빌드와 제출
# 개발용 빌드
eas build --platform ios --profile development
# 프리뷰 빌드 (내부 테스트)
eas build --platform all --profile preview
# 프로덕션 빌드
eas build --platform all --profile production
# 스토어 제출
eas submit --platform ios --profile production
eas submit --platform android --profile production
# 빌드 + 제출 한 번에
eas build --platform all --profile production --auto-submit
GitHub Actions 연동
# .github/workflows/eas-build.yml
name: EAS Build
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
# EAS Build 실행
- uses: expo/expo-github-action@v8
with:
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
- run: eas build --platform all --profile production --non-interactive --auto-submit
환경별 설정
// app.config.ts — 동적 설정
export default ({ config }) => {
const isProduction = process.env.APP_ENV === 'production';
return {
...config,
name: isProduction ? 'MyApp' : 'MyApp (Dev)',
ios: {
bundleIdentifier: isProduction
? 'com.myapp'
: 'com.myapp.dev',
},
android: {
package: isProduction
? 'com.myapp'
: 'com.myapp.dev',
},
extra: {
apiUrl: isProduction
? 'https://api.myapp.com'
: 'https://api-staging.myapp.com',
},
};
};
정리
- EAS Build 를 사용하면 Mac 없이도 iOS 앱을 빌드할 수 있습니다
development,preview,production세 단계 프로필 로 관리하세요- GitHub Actions 와 연동하면 코드 푸시만으로 자동 빌드/배포가 가능합니다
eas submit으로 App Store와 Google Play에 자동 제출 할 수 있습니다- 환경별 설정은
app.config.ts에서 동적으로 관리하세요
댓글 로딩 중...