-
[Flutter] Github Action + Firebase distribution 안드로이드 배포플러터 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하면 자동으로 빌드 후 배포
'플러터' 카테고리의 다른 글
[Flutter] BuildContext (0) 2024.04.15 [Flutter] Custom Button 만들기 (0) 2024.04.07 Flutter Google sign in(Android) (0) 2024.03.31 Package에서 Custom Asset 사용하기 (0) 2024.03.24 Sendbird 메시지 분류 (customType을 사용한 분류) (0) 2024.03.06