ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Flutter] Github Action + Firebase distribution 안드로이드 배포
    플러터 2024. 4. 6. 20:58

    Release 브렌치에 push 하면 firebase distribution으로 자동 배포

    1. Firebase에 프로젝트 만들고 앱 연결
    2. 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 }} 설정

    • 앱 배포 관리자 추가

    • 키 관리 선택

    • 새 키 JSON으로 만들면 자동으로 Json 파일 다운로드

    • 다운된 JSON 파일 텍스트 Repository secrets 에 셋팅

     

    4. testers 추가

    • Firebase 에 testers그룹만들고 추가.

    Github Action 순서

    1. Flutter 빌드를 위한 Flutter 환경 (https://github.com/subosito/flutter-action)
    2. Android build를 위한 JDK setup (https://github.com/actions/setup-java)
    3. 프로젝트 checkout
    4. 빌드
    5. 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하면 자동으로 빌드 후 배포

Designed by Tistory.