[Android] GitHub Actions로 QA용 CD 구축하기 - Firebase 활용

2025. 8. 3. 21:04·개발/Android

들어가며

지난 포스팅에서는 Secret을 사용해서 민감한 파일을 워크플로에 안전하게 전달하고, CI 워크플로를 조금 더 효율적으로 개선하는 방법을 알아보았습니다.

 

[Android] GitHub Actions로 CI 적용하기 - 심화 가이드

들어가며GitHub Actions 시리즈를 시작하고 꾸준히 작성해보려 했는데, 현생과 다른 주제의 글을 적다보니 생각보다 너무 늦어졌네요. 🥲그래서 오랜만에 다시 돌아왔습니다!이전 포스팅에서는 Git

walnut-dev.tistory.com

 

앱을 출시하기 전, 개발한 앱이 잘 동작하는지, 이전의 기능과 새로 추가된 기능에 문제가 없는지 직접 테스트해야할 상황이 올 것입니다.

CD(Continuous Deployment)를 이용해 워크플로를 잘 설정한다면, 이러한 QA 진행 과정을 자동화하고 빠르게 테스트 버전을 배포하여 개발에 편리함을 얻을 수 있습니다.

 

이번 시간에는 Firebase App Distribution과 GitHub Actions를 이용해 테스트 앱을 배포하는 CD 워크플로를 작성하는 방법을 알아보겠습니다.

 

대상 독자

아래와 같은 독자분들이 글을 읽으시면 더욱 도움이 될 것입니다.

  • CI/CD를 처음 구축하려는 개발자
  • QA 진행이 어렵거나 귀찮은 개발자
  • 다른 팀은 CD 워크플로를 어떻게 설정했는지 참고하고 싶은 개발자

 


 

CD(Continuous Deployment)

CD란?

Continuous Deployment(또는 Continuous Delivery)의 약자이며, 지속적 배포라는 뜻입니다.

지속적 통합(CI, Continuous Integration) 이후에 빌드 산출물을 자동으로 배포하는 파이프라인을 일컫습니다.

CD의 목적

CD를 사용하는 이유는 다음과 같습니다.

 

편리하고 빠른 배포가 가능합니다.

원격 레포지토리에 커밋 후, 몇 분 내로 빌드 및 배포가 수행됩니다.

빌드, 업로드, 테스터에게 전달, 배포 등의 과정을 자동으로 처리하기 때문에, 직접 배포하던 수고를 덜고 빠른 QA가 가능해집니다.

 

일관적인 빌드가 가능합니다.

간혹 팀원과 함께 개발할 때, 내 PC에서는 잘 되는 빌드가 팀원의 PC에서는 실패한 적이 있었을 것입니다.

빌드 스크립트, 앱 서명, 경우에 따라서는 버전 규칙 설정 등을 코드로 구축하기 때문에, 이렇게 내 PC에서만 빌드가 되는 현상을 줄여 일관적인 작업이 가능합니다.

 

안전하게 배포할 수 있습니다.

앱 서명 Key 파일 등의 민감한 정보를 Secret으로 관리하고, 배포 작업을 코드로 자동화하여 사람이 할 수 있는 실수를 제거하기 때문에 좀 더 안전하게 배포를 진행할 수 있습니다.

 

 

스타카토 앱을 정식 출시하기 전, 저희 팀은 항상 오프라인으로 모여 개발과 회의를 했습니다. QA를 해야할 때도 직접 팀원들의 휴대전화를 받아 그 자리에서 노트북으로 바로 빌드를 해주었습니다. 그러나 정식 출시 이후에는 개인 약속, 면접 준비, 취업 등 팀원들의 개인 사정으로 인해 오프라인으로 만날 수 있는 일정이 줄어들었고, 이로 인해 팀원들과 함께 QA를 진행하기 어려워졌습니다. 배포 프로세스 일정을 맞추기 위해 충분한 QA가 이루어지지 않은 채로 릴리즈 배포를 진행했고, 이후 치명적인 버그가 발견되어 뒤늦게 핫픽스를 한 경우도 종종 있었습니다.

 

이러한 상황을 겪으며 QA의 중요성을 다시금 깨닫고, 오프라인으로 만나지 못하더라도 기능 개발이 완성되면 팀원에게 자동으로 테스트 앱을 전달할 수 있도록 CD 워크플로를 구축했습니다.

덕분에 지금은 기능 병합 후 곧바로 테스트 앱이 팀원에게 배포되어 편리하고 안전하게 개발을 진행하고 있습니다.

 

 

QA용 CD 워크플로 설정하기

전체 플로우

CD 워크플로의 전체적인 흐름은 다음과 같습니다.

  1. develop 브랜치 머지
  2. 앱 빌드 수행
  3. 빌드 파일을 Firebase에 업로드

절차가 생각보다 단순합니다. 아래는 위 흐름을 따르는 워크플로의 일부입니다.

on:
  push:
    branches:
      - develop

jobs:
  build-and-distribute:
    name: Generate debug APK and distribute to tester
    runs-on: ubuntu-latest

    env:
      GOOGLE_SERVICES_JSON: ${{ secrets.GOOGLE_SERVICES_JSON }}
      GOOGLE_SERVICES_ACCOUNT_KEY: ${{ secrets.GOOGLE_SERVICES_ACCOUNT_KEY }}
      FIREBASE_APP_ID: ${{ vars.FIREBASE_APP_ID }}

    steps:
      - uses: actions/checkout@v4

      - name: Setup JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'
          cache: gradle

      - name: Grant execute permission for gradlew
        run: chmod +x gradlew

      - name: Create Config Files
        run: |
          echo $GOOGLE_SERVICES_JSON > ./app/google-services.json

      - name: Build Debug APK
        run: ./gradlew assembleDebug

      - name: Upload APK to Firebase App Distribution
        uses: wzieba/Firebase-Distribution-Github-Action@v1.7.0
        with:
          appId: $FIREBASE_APP_ID
          serviceCredentialsFileContent: $GOOGLE_SERVICES_ACCOUNT_KEY
          groups: my_testers
          file: .../app/build/outputs/apk/debug/app-debug.apk

 

세부적인 절차는 제거한 코드이지만, 역시 그렇게 복잡하지 않습니다. 대신 Firebase, GCP 등 사전에 설정해야하는 과정이 필요합니다. (이게 좀 귀찮을 뿐…)

처음이신 분들도 헤매지 않도록 그 과정을 자세하게 설명해보겠습니다.

1. Firebase App Distribution 설정

사용 목적

Firebase App Distribution

 

Firebase App Distribution

Firebase 앱 배포를 사용하면 신뢰할 수 있는 테스터에 앱을 쉽게 배포할 수 있습니다. 테스터 기기에 앱을 빠르게 제공하여 앱에 대한 의견을 조기에 자주 받을 수 있습니다. 또한 앱에서 Crashlytics

firebase.google.com

 

Firebase 앱 배포는 구글에서 지원하는 배포 관리 시스템이며, 무료로, 그리고 편리하게 사용할 수 있습니다.

또한 사용자의 앱/웹 사용성을 분석할 수 있는 Analytics와 앱/웹의 오류 발생을 파악하는 Crashlytics와 쉽게 연동할 수 있어, 로그 분석과 서비스 사용성 개편에 유리하다는 이점이 있습니다.

스타카토도 앱 로그와 에러 수집을 위해 Firebase의 Analytics, Crashlytics를 사용하고 있었기에 Firebase App Distribution을 활용했습니다.

 

Firebase 등록하기

Firebase Console을 사용하여 테스터에 Android 앱 배포  |  Firebase App Distribution

 

Firebase Console을 사용하여 테스터에 Android 앱 배포  |  Firebase App Distribution

새로운 Firebase Studio 기능부터 AI 통합 방법까지 I/O에서 발표된 모든 내용을 확인해 보세요. 블로그 읽기 의견 보내기 Firebase Console을 사용하여 테스터에 Android 앱 배포 컬렉션을 사용해 정리하기

firebase.google.com

Firebase 프로젝트를 만들어 앱을 등록하는 절차를 시작합니다. 위의 공식 문서를 함께 참고하셔도 좋습니다.

 

Firebase 프로젝트 생성하기

우선 Firebase 프로젝트가 없다면 프로젝트를 새로 만들어야 합니다. 앱을 추가하기 위해 만들어둔 Firebase 프로젝트가 있다면 해당 단계는 건너뛰어도 좋습니다.

  • Firebase Console로 이동합니다.
  • Firebase 프로젝트 만들기를 선택하세요.

Firebase 콘솔 화면

  • 프로젝트 이름을 입력해주세요. 프로젝트 이름은 영문자, 숫자, 공백과 일부 특수기호(- ! ‘ “)만 입력 가능합니다.

Firebase 프로젝트 만들기 - 이름 작성

  • (선택) Gemini와 애널리틱스 사용을 설정합니다. 필수는 아니므로 필요하신 분들만 설정하셔도 좋습니다.
    • 저는 Gemini는 사용하고있지 않은데, 얼마나 유용할까 궁금하네요. 나중에 사용해보고 기회가 되면 후기를 작성해보겠습니다.

Firebase 프로젝트 만들기 - Gemini, Analytics 설정

  • (애널리틱스를 사용 설정한 경우) 애널리틱스 구성 설정입니다. 계정을 만들고 위치 설정, 약관 동의가 필요합니다.
    • 계정은 넷플릭스로 치면 프로필 같은 것이라고 이해하시면 되겠습니다.
    • 위치는 조직(팀)의 국가 또는 지역을 나타냅니다. 대한민국으로 설정하고 넘어가시면 되겠습니다.

Firebase 프로젝트 만들기 - 애널리틱스 구성 설정

 

Firebase 프로젝트에 앱 추가하기

짜잔! Firebase 프로젝트입니다.

 

이렇게 프로젝트를 생성했다면 앱을 추가해야 합니다.

  • 메인 화면 배너 중앙의 버튼을 눌러 앱 추가 화면으로 이동합니다.
  • Android 패키지 이름을 입력합니다. Android 프로젝트의 패키지 이름을 정확하게 입력해야 합니다.
    • 닉네임은 자유롭게 설정하시면 되고, 서명 인증서 SHA-1의 경우 나중에 필요할 때(Google 로그인, 딥링크 사용 등) 따로 설정할 수 있으므로 지금은 넘어가셔도 좋습니다.

Android 앱에 Firebase 추가 - 앱 등록

  • 구성 파일인 google-services.json 파일을 다운로드한 뒤, 프로젝트의 루트 경로에 추가합니다.
    • 해당 파일은 프로젝트 ID, 앱 ID, API Key 등 프로젝트에 연결된 앱을 식별하는 정보가 들어있습니다.
    • 유출 시 치명적이지는 않기에 각별하게 주의할 필요는 없지만, 악의적인 누군가가 API Key를 가지고 알림을 보내거나 유료 API를 호출할 가능성이 있기 때문에 되도록 유출시키지 않는 것이 좋습니다.
    • 로컬에서 빌드할 때 사용할 수 있도록 .gitignore에 해당 파일을 추가하여 커밋 대상에서 제외하고, 워크플로에서는 Secret으로 접근하는 것을 추천드립니다.

Android 앱에 Firebase 추가 - 구성 파일 추가

  • Firebase SDK를 추가합니다.
    • 방금 추가한 구성 파일을 SDK가 접근할 수 있도록, 루트 수준(프로젝트 수준) Gradle 파일에 플러그인을 추가합니다.
plugins {
    // ...
    // 구글 서비스에 대한 Gradle 플러그인 의존성을 추가합니다.
    id("com.google.gms.google-services") version "4.4.3" apply false
}
  • 그리고 모듈 수준(앱 수준) Gradle 파일에 플러그인과 Firebase SDK 의존성을 추가합니다.
plugins {
    // ...
    // 구글 서비스 플러그인을 추가합니다.
    id("com.google.gms.google-services")
}

dependencies {
    // Firebase BoM 의존성
    implementation(platform("com.google.firebase:firebase-bom:34.0.0"))

    // TODO: 사용하고자 하는 Firebase 기능 의존성 추가하기
    // e.g. Firebase Analytics, Firebase Crashlytics 등
    // BoM을 사용하면 Firebase 라이브러리 의존성에 버전을 명시하지 않아도 됩니다.
    implementation("com.google.firebase:firebase-analytics")
}
  • 의존성을 추가하고 동기화를 하면 앱에 대한 Firebase 설정이 끝납니다.

 

테스터 추가하기

  • Firebase 프로젝트 메뉴에서 App Distribution을 선택합니다. ”시작하기”를 눌러 활성화합니다.
  • 초대 링크를 눌러 테스터를 초대하거나, 직접 테스터를 초대합니다.
    • 테스터의 유효한 이메일을 입력하여 추가할 수 있습니다.

Firebase 프로젝트에 테스터 추가

  • 필요 시 그룹을 생성하여 테스터를 구분할 수 있습니다.
    • 그룹을 생성해 관리하면 특정 테스터에게만 테스트 앱을 배포하여 QA를 진행할 수 있습니다.

 

2. GCP(Google Cloud Platform) 설정

사용 목적

https://console.cloud.google.com/

 

Google 클라우드 플랫폼

로그인 Google 클라우드 플랫폼으로 이동

accounts.google.com

 

저희가 만든 Firebase 프로젝트는 GCP 프로젝트와 연결되어 있습니다. 그래서 아래처럼 저희가 만든 Firebase를 기반으로 GCP에 프로젝트가 자동 생성됩니다.

GCP 콘솔에서 프로젝트 목록을 살펴보면, Firebase에서 만든 프로젝트가 자동 생성되어 존재합니다.

 

Firebase에 앱을 배포하는 Action(wzieba/Firebase-Distribution-Github-Action)은 내부적으로 CLI를 이용해 앱을 업로드하는데, 이 때 Firebase App Distribution API를 호출하기 위해서는 권한 인증이 필요합니다.

이를 위해 GCP에서 서비스 계정 생성과 권한 설정이 필요하고, 지금이 바로 그 작업을 하는 단계입니다.

 

GCP 설정하기

Authenticate with a service account  |  Firebase App Distribution

 

서비스 계정을 사용하여 인증  |  Firebase App Distribution

새로운 Firebase Studio 기능부터 AI 통합 방법까지 I/O에서 발표된 모든 내용을 확인해 보세요. 블로그 읽기 의견 보내기 서비스 계정을 사용하여 인증 컬렉션을 사용해 정리하기 내 환경설정을 기준

firebase.google.com

이번 글에서는 구글 클라우드의 서비스 계정을 활용한 방식을 설명합니다.
현재 GitHub, Google 모두 OIDC 단기 토큰(Workload Identity Federation) 방식을 권장하지만, 더 간단히 설정할 수 있는 서비스 계정 방식을 우선 설명드립니다.
추후에 OIDC 단기 토큰 인증 방식에 대해서도 포스팅해보겠습니다.

 

서비스 계정 생성하기

  • Google Cloud Console에서 IAM 및 관리자를 선택합니다.
    • 사용자 자신(이메일)과 Firebase SDK가 사용하는 계정이 자동으로 생성되어 있습니다.
  • “서비스 계정” 메뉴로 이동하여 “서비스 계정 만들기”를 클릭합니다.
    • 빌드 파일을 업로드할 권한이 설정된 계정을 새로 추가하기 위함입니다.

GCP 프로젝트 설정 - 서비스 계정 메뉴 진입

 

  • 서비스 계정의 세부 정보를 입력합니다.
    • 다른 계정과 혼동되지 않도록 적절한 이름과 설명을 작성합니다.

GCP 서비스 계정 생성 - 세부 정보 입력

 

  • 서비스 계정의 권한을 설정합니다.
    • Firebase에 앱을 업로드할 수 있도록, “Firebase 앱 배포 관리자” 권한을 검색하여 추가합니다.

GCP 서비스 계정 생성 - 관리 권한 설정

  • 계정에 대한 액세스 권한 설정은 넘어가도 좋습니다.
    • 상황에 따라 적절한 사용자에게 계정 관리 권한을 부여할 수 있습니다.

 

서비스 계정 키 다운로드 및 저장하기

생성한 서비스 계정의 “키 관리” 설정을 클릭합니다.

GCP 서비스 계정 목록

 

“키 추가” 버튼을 눌러 새로운 키를 생성합니다.

GCP 서비스 계정 키 관리

 

Json 형식의 비공개 키를 선택합니다.

GCP 서비스 계정 키 생성하기

 

생성된 키가 PC에 저장되었는지 확인합니다.

생성한 서비스 계정 키 파일이 PC에 자동 저장됩니다.

  • 키가 정상적으로 저장되었는지 확인이 되었다면, GCP 프로젝트에 대한 설정이 끝납니다.
  • 해당 비공개 키 파일은 외부에 유출되어서는 안되므로 각별한 주의가 필요합니다.

 

3. 워크플로 작성하기

여기까지 기본적인 설정이 모두 끝났습니다! 이제 정말 테스터에게 자동으로 배포할 수 있는 CD 워크플로를 작성해보겠습니다.

아래는 CD 워크플로 샘플입니다.

on:
  push:
    branches:
      - develop

jobs:
  build-and-distribute:
    name: Generate debug APK and distribute to tester
    runs-on: ubuntu-latest

    env:
      GOOGLE_SERVICES_JSON: ${{ secrets.GOOGLE_SERVICES_JSON }}
      GOOGLE_SERVICES_ACCOUNT_KEY: ${{ secrets.GOOGLE_SERVICES_ACCOUNT_KEY }}
      FIREBASE_APP_ID: ${{ vars.FIREBASE_APP_ID }}

    steps:
      - uses: actions/checkout@v4

      - name: Setup JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'
          cache: gradle

      - name: Grant execute permission for gradlew
        run: chmod +x gradlew

      - name: Create Config Files
        run: |
          echo $GOOGLE_SERVICES_JSON > ./app/google-services.json

      - name: Build Debug APK
        run: ./gradlew assembleDebug

      - name: Upload APK to Firebase App Distribution
        uses: wzieba/Firebase-Distribution-Github-Action@v1.7.0
        with:
          appId: $FIREBASE_APP_ID
          serviceCredentialsFileContent: $GOOGLE_SERVICES_ACCOUNT_KEY
          groups: my_testers
          file: .../app/build/outputs/apk/debug/app-debug.apk

 

워크플로에 대해 설명하기 전에 워크플로를 실행시키기 위한 변수 설정(Secrets, Variables)을 먼저 수행하겠습니다.

 

필요한 데이터 확인하기

CD 워크플로에서 Firebase에 앱을 배포하기 위해서는, Firebase와 GCP 프로젝트를 설정하며 생성한 정보와 파일이 필요합니다.

  • Firebase App ID
  • google-services.json
  • 구글 클라우드 서비스 계정 키 파일(Json)

이 중 Firebase App ID는 단순히 앱을 구분하기 위한 값을 의미하기 때문에 민감한 정보는 아닙니다. 하지만 워크플로에 하드코딩한 경우 가독성이 떨어질 수 있기 때문에 GitHub Actions의 Variables를 이용해 워크플로에 ID 값을 전달할 것입니다.

google-services.json과 서비스 계정 키 파일은 민감할 수 있어 외부에 유출하면 안되므로, Secrets을 이용해 워크플로에 전달하겠습니다.

Secret 설정하기

[Android] GitHub Actions로 CI 적용하기 - 심화 가이드

 

[Android] GitHub Actions로 CI 적용하기 - 심화 가이드

들어가며GitHub Actions 시리즈를 시작하고 꾸준히 작성해보려 했는데, 현생과 다른 주제의 글을 적다보니 생각보다 너무 늦어졌네요. 🥲그래서 오랜만에 다시 돌아왔습니다!이전 포스팅에서는 Git

walnut-dev.tistory.com

Secret을 생성하고 설정하는 자세한 방법은 위 포스팅을 참고하세요!

 

google-services.json 파일과 서비스 계정 키 파일(Json)의 내용을 그대로 복사하여 각각의 Secret으로 생성해둡니다.

Variables 설정하기

다음으로 앱 ID를 Variables에 추가합니다.

  • Firebase 앱 ID를 확인해 복사합니다.
    • 앱 ID는 Firebase 프로젝트의 “프로젝트 설정”에서 확인할 수 있습니다.

Firebase 프로젝트 설정 화면에서 등록된 앱 ID를 확인할 수 있습니다.

  • GitHub 레포지토리의 Settings > Secrets and variables > Variables 로 이동합니다.

GitHub 레포지토리 Settings - Secrets and variables - Actions

  • Repository Variable을 생성합니다.
    • Value에 앱 ID를 붙여넣습니다.

Firebase 앱 ID를 등록합니다.

 

워크플로 작성하기

이제 워크플로를 작성해보겠습니다.

 

워크플로 실행 조건

# develop 브랜치에 push 이벤트가 발생했을 때 -> 기능 브랜치가 develop에 병합되었을 때
on:
  push:
    branches:
      - develop

CD 워크플로가 실행되는 조건을 설정합니다.

저희는 기능이 병합되는 개발 브랜치인 develop 브랜치에 push 이벤트가 발생했을 때 배포가 진행되도록 했습니다. develop 브랜치에 대한 병합을 트리거로 설정한 이유는, 보다 빠르게 버그를 찾고 사용성을 평가하여 신속하게 개선할 수 있다는 장점 때문입니다.

물론 이 부분은 팀의 개발 프로세스에 따라 다르게 적용될 수 있으므로, 참고만 하시기 바랍니다. 일반적으로는 release 브랜치에 병합될 때(또는 배포 준비 단계에) CD 워크플로가 실행되어 QA를 진행합니다.

 

필요한 작업 추가

jobs:
  build-and-distribute:
    name: Generate debug APK and distribute to tester
    runs-on: ubuntu-latest

    # Secrets와 Variables를 Job 범위에서 환경 변수로 지정하여 사용
    env:
      GOOGLE_SERVICES_JSON: ${{ secrets.GOOGLE_SERVICES_JSON }}
      GOOGLE_SERVICES_ACCOUNT_KEY: ${{ secrets.GOOGLE_SERVICES_ACCOUNT_KEY }}
      FIREBASE_APP_ID: ${{ vars.FIREBASE_APP_ID }}

    steps:
      # 레포지토리 체크아웃
      - uses: actions/checkout@v4

      # JDK 버전 설정(사용 중인 버전에 맞게 변경)
      - name: Setup JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'
          cache: gradle

      # gradlew 실행 권한 부여(Linux/macOS Runner라면 생략 가능)
      - name: Grant execute permission for gradlew
        run: chmod +x gradlew

 

Runner 설정, 환경 변수(google-services.json 값) 설정, 레포지토리 Checkout, JDK 설정 등 필요한 작업을 추가합니다.

필요 데이터(앱 ID, google-services.json 등)의 경우 가독성을 위해 Job 단계에서 환경 변수로 설정했습니다.

Variables의 경우 vars Context를 이용해 접근할 수 있습니다.

 

앱 빌드하기

      # 구성 파일 생성(google-services.json 외에도 필요한 파일을 생성)
      - name: Create Config Files
        run: |
          echo $GOOGLE_SERVICES_JSON > ./app/google-services.json

      # Debug 빌드하여 APK 파일 생성(assembleDebug로 생성)
      - name: Build Debug APK
        run: ./gradlew assembleDebug

Secret으로 설정한 값으로 google-services.json 파일을 생성하고, 앱을 빌드하여 APK 파일을 생성합니다.

 

Action 사용하기 - wzieba/Firebase-Distribution-Github-Action

https://github.com/wzieba/Firebase-Distribution-Github-Action

 

GitHub - wzieba/Firebase-Distribution-Github-Action: This action uploads artifacts (.apk or .ipa) to Firebase App Distribution.

This action uploads artifacts (.apk or .ipa) to Firebase App Distribution. - wzieba/Firebase-Distribution-Github-Action

github.com

 

저는 위 Action을 사용하여 Firebase에 앱 빌드 파일을 업로드했습니다. 자세한 설정을 알고 싶으시면 위 링크를 참고해주세요.

      # 생성한 APK 파일을 Firebase App Distribution에 업로드
      - name: Upload APK to Firebase App Distribution
        uses: wzieba/Firebase-Distribution-Github-Action@v1.7.1  # 최신 버전 사용!
        with:
          appId: $FIREBASE_APP_ID  # Firebase에 등록된 앱 ID
          serviceCredentialsFileContent: $GOOGLE_SERVICES_ACCOUNT_KEY  # 구글 클라우드 서비스 계정 Key 파일
          groups: my_testers  # 앱을 배포할 대상 테스터 그룹
          file: .../app/build/outputs/apk/debug/app-debug.apk  # 생성된 APK 파일 위치

 

Action을 사용하는 코드입니다. appId 와 serviceCredentialsFileContent (Service 계정 키 파일), file (APK 빌드 파일 경로)은 필수로 설정해야하는 값입니다.

Secret과 Variable에서 설정한 앱 ID와 서비스 계정 키 데이터를 가져와 각각 설정해주고, 올바른 APK 파일 경로를 작성합니다.

groups는 Firebase 프로젝트에서 생성한 테스터 그룹의 이름을 넣을 수 있습니다.

 

🚨 주의할 점 🚨

> Firebase App Distribution을 수행하는 Action의 버전을 최신 버전으로 유지해주세요.

구글에 검색하면 자세히 설명되어 있으나 작성한지 시간이 지난 게시글이 많이 있는데, 해당 게시글 대부분은 과거 버전인 v1 버전을 소개하고 있습니다. 하지만 과거 버전은 업로드 시간이 오래 걸리는 문제가 있으므로, 글 작성 시점 기준 최신 버전인 v1.7.1 버전으로 설정하시는 것을 권장드립니다.

 

> 그리고 올바른 APK 파일 경로를 작성해주세요.

잘못된 파일 경로를 작성할 경우, 빌드 파일을 찾을 수 없어 업로드에 실패합니다.

일반적으로 APK 빌드 파일은 <프로젝트>/<app 모듈>/build/outputs/apk/debug 경로에 생성됩니다. 별도로 파일 이름을 지정하지 않은 경우 app-debug.apk 와 같은 이름으로 생성됩니다.

사전에 로컬 PC 환경에서 앱을 빌드하여 생성된 APK 파일의 경로를 확인하신 후, 이를 참고해 워크플로에서 경로를 설정하시는 것을 추천드립니다.

 


마치며

지금까지 GitHub Action과 Firebase App Distribution을 이용하여 테스터들에게 앱을 자동으로 배포하도록 설정하는 방법을 알아보았습니다.

이렇게 CD 워크플로를 설정하면 팀원에게 빠르게 테스트 앱을 배포하여 원활한 QA를 수행할 수 있고, 이는 안전하고 효율적인 배포 프로세스를 이어가는데 도움이 될 것입니다.

 

열심히 개발을 끝내고 QA까지 완료되었다면, 이제 완성한 서비스를 실제 사용자에게 배포할 차례입니다. GitHub Actions 시리즈의 다음 포스팅은 Google Play Store에 업로드하는 CD 워크플로를 설정하는 방법을 알아보겠습니다.

 

참고 자료

  • https://onlyfor-me-blog.tistory.com/844
  • https://firebase.google.com/docs/app-distribution
  • https://github.com/wzieba/Firebase-Distribution-Github-Action

'개발 > Android' 카테고리의 다른 글

[Android] Compose에서 Pinch Zoom 구현하기  (0) 2025.06.13
[Android] GitHub Actions로 CI 적용하기 - 간단 가이드  (0) 2025.04.02
[Android] Compose 상태 관리 심화  (0) 2025.02.15
[Android] Compose 상태 관리의 기본 개념  (0) 2025.01.30
[Android] 우리가 RecyclerView를 사용하는 이유 (feat. ListView)  (0) 2025.01.10
'개발/Android' 카테고리의 다른 글
  • [Android] Compose에서 Pinch Zoom 구현하기
  • [Android] GitHub Actions로 CI 적용하기 - 간단 가이드
  • [Android] Compose 상태 관리 심화
  • [Android] Compose 상태 관리의 기본 개념
호두가코딩했어요
호두가코딩했어요
몰입과 소통을 좋아하는 안드로이드 새싹 개발자입니다. 모르는 것은 이해할 때까지 파고들어서 공부해야 적성이 풀립니다. 더 나은 구현을 위해 고민하고 자주 소통하는 것을 좋아합니다. 분야에 개의치 않고 학습하고 지식을 쌓아서, 훌륭한 서비스를 만들어가는 개발자가 되고자 합니다.
  • 호두가코딩했어요
    WalnutTheDeveloper
    호두가코딩했어요
  • 전체
    오늘
    어제
    • 카테고리
      • 개발
        • CS
        • Kotlin
        • Android
      • 일상
        • 회고록
        • 맛집
  • 블로그 메뉴

    • 홈
    • 카테고리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    MVVM
    compose
    소프트웨어 아키텍처 패턴
    소프트웨어 디자인 패턴
    디자인 패턴
    아키텍처 패턴
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
호두가코딩했어요
[Android] GitHub Actions로 QA용 CD 구축하기 - Firebase 활용
상단으로

티스토리툴바