플러터
[Flutter] Github Action + Firebase distribution 안드로이드 배포
sam-ss
2024. 4. 6. 20:58
Release 브렌치에 push 하면 firebase distribution으로 자동 배포
- Firebase에 프로젝트 만들고 앱 연결
- Github Aciton 셋팅 하여 자동 배포
Firebase 프로젝트 셋팅
- Firebase console 에 프로젝트 생성
- 안드로이드 앱 연결
- google-services.json 다운 → app/ 에 넣음
- settings.gradle 수정
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "7.3.0" apply false
id "org.jetbrains.kotlin.android" version "1.7.10" apply false
id 'com.google.gms.google-services' version '4.4.1' apply false // 추가
}
- app/build.gradle 수정
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
id "com.google.gms.google-services" // 추가
}
Github Action 설정
1. 기존 yml 파일에 코드 추가.
- name: Upload artifact to Firebase App Distribution
uses: wzieba/Firebase-Distribution-Github-Action@v1
with:
appId: ${{secrets.FIREBASE_APP_ID}}
serviceCredentialsFileContent: ${{ secrets.CREDENTIAL_FILE_CONTENT }}
groups: testers
file: android/app/build/outputs/apk/release/app-release.apk
2. ${{secrets.FIREBASE_APP_ID}} 설정
- 앱 ID 가져오기 : 프로젝트 설정 → 내 앱 → 앱 ID
- 설정 : Settings → Secrets and variables → Actions → Repository secrets 에 앱 ID 설정
3. ${{ secrets.CREDENTIAL_FILE_CONTENT }} 설정
- https://console.cloud.google.com/projectselector2/iam-admin/serviceaccounts 접속
- 프로젝트 접속(프로젝트 없다면 프로젝트 생성)
- 서비스 계정 만들기
- 앱 배포 관리자 추가
- 키 관리 선택
- 새 키 JSON으로 만들면 자동으로 Json 파일 다운로드
- 다운된 JSON 파일 텍스트 Repository secrets 에 셋팅
4. testers 추가
- Firebase 에 testers그룹만들고 추가.
Github Action 순서
- Flutter 빌드를 위한 Flutter 환경 (https://github.com/subosito/flutter-action)
- Android build를 위한 JDK setup (https://github.com/actions/setup-java)
- 프로젝트 checkout
- 빌드
- apk upload (https://github.com/wzieba/Firebase-Distribution-Github-Action?tab=readme-ov-file)
완성된 Github Action
name: Android Deploy
on:
push:
branches:
- release/**
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.19.3"
channel: 'stable'
cache: true
id: flutter
- name: JDK setup
uses: actions/setup-java@v1
with:
java-version: '12.x'
- name: Checkout project
uses: actions/checkout@v2
- name: Archive app
run: |
cd PROJECT_DIR
flutter build apk --release
- name: Upload APK
uses: wzieba/Firebase-Distribution-Github-Action@v1
with:
appId: ${{secrets.FIREBASE_APP_ID}}
serviceCredentialsFileContent: ${{ secrets.CREDENTIAL_FILE_CONTENT }}
groups: testers
file: PROJECT_DIR/build/app/outputs/flutter-apk/app-release.apk
- PROJECT_DIR은 프로젝트에 맞춰 설정
결론
release/1.0.0+1 이런식으로 “release” 가 들어간 브렌치를 push하면 자동으로 빌드 후 배포