본문 바로가기
코딩

Github Actions로 Android 앱 CI/CD 구축, Fastlane과 Firebase 자동 배포

by 코딩하면 나지 2026. 5. 28.

Android 앱 개발, 이제 코딩만큼 배포도 스마트하게! 이번 글에서는 Github Actions와 Fastlane을 연동하여 Firebase App Distribution까지 자동화하는 CI/CD 구축 과정을 소개합니다. 지루한 수동 배포는 이제 안녕, 자동화된 빌드와 배포를 통해 개발 생산성을 극대화하는 방법을 함께 알아볼까요?

1. Android 앱 배포 자동화, 꿈이 현실로: CI/CD 소개

Android 앱 개발에서 CI/CD (Continuous Integration/Continuous Delivery)는 개발 효율성을 극대화하는 핵심 요소입니다. CI/CD는 코드 변경 사항을 자동으로 빌드, 테스트, 배포하는 프로세스를 의미합니다. 이 과정을 통해 개발자는 앱의 안정성을 유지하면서 더 빠르게 새로운 기능을 제공할 수 있습니다.

수동 배포는 시간 소모적이고 오류 발생 가능성이 높습니다. 따라서 CI/CD 시스템을 구축하면 이러한 문제를 해결하고 개발 생산성을 향상시킬 수 있습니다. 본 가이드에서는 GitHub Actions, Fastlane, Firebase App Distribution을 연동하여 Android 앱 배포를 자동화하는 방법을 소개합니다.

→ 1.1 CI/CD 파이프라인 구축의 중요성

CI/CD 파이프라인을 구축하면 다음과 같은 이점을 얻을 수 있습니다.

  • 자동화된 빌드 및 테스트: 코드 변경 사항이 있을 때마다 자동으로 빌드 및 테스트를 수행합니다.
  • 빠른 피드백 루프: 문제점을 신속하게 발견하고 수정할 수 있습니다.
  • 배포 자동화: 앱 배포 과정을 자동화하여 시간을 절약하고 오류를 줄입니다.
  • 협업 강화: 개발팀, QA팀, 운영팀 간의 협업을 원활하게 합니다.

GitHub Actions는 GitHub에서 제공하는 CI/CD 플랫폼입니다. Fastlane은 Android 및 iOS 앱을 빌드, 테스트, 배포하는 데 사용되는 도구입니다. Firebase App Distribution은 테스터에게 앱을 배포하는 데 사용되는 Firebase 서비스입니다. 이 세 가지 도구를 함께 사용하면 강력한 Android 앱 CI/CD 파이프라인을 구축할 수 있습니다.

예를 들어, 개발자가 새로운 기능을 개발하고 코드를 GitHub에 푸시하면, GitHub Actions는 자동으로 앱을 빌드하고, 테스트를 실행하고, Firebase App Distribution을 통해 테스터에게 앱을 배포할 수 있습니다. 이를 통해 개발자는 코드 작성에 집중하고 앱 배포 과정을 간소화할 수 있습니다.

2. CI/CD 핵심 개념: 지속적인 통합과 배포 완벽 이해

CI/CD (Continuous Integration/Continuous Delivery)는 소프트웨어 개발의 효율성과 안정성을 높이는 데 필수적인 방법론입니다. 이는 코드 변경 사항을 통합하고, 테스트하며, 배포하는 과정을 자동화하여 개발 주기를 단축합니다. 결과적으로 개발자는 더 빠르게 피드백을 받고, 오류를 줄이며, 최종 사용자에게 더 나은 품질의 소프트웨어를 제공할 수 있습니다.

→ 2.1 지속적인 통합 (Continuous Integration)

지속적인 통합(CI)은 개발자들이 코드를 공유 저장소에 자주 통합하는 개발 방식입니다. 각 코드 변경 사항은 자동으로 빌드되고 테스트를 거칩니다. 이를 통해 통합 과정에서 발생하는 문제를 신속하게 발견하고 해결할 수 있습니다.

예를 들어, 개발자가 새로운 기능을 개발하고 코드를 저장소에 푸시하면 CI 시스템이 자동으로 빌드를 수행하고 단위 테스트를 실행합니다. 만약 테스트에 실패하면 개발자에게 즉시 알림이 전송되어 문제를 해결하도록 지원합니다.

→ 2.2 지속적인 배포 (Continuous Delivery/Deployment)

지속적인 배포(CD)는 지속적인 통합된 코드 변경 사항을 자동으로 프로덕션 환경에 배포하는 방식입니다. 지속적인 배포는 지속적인 제공(Continuous Delivery)과 지속적인 배포(Continuous Deployment) 두 가지 형태로 나뉩니다. 지속적인 제공은 배포 과정을 자동화하지만, 최종 배포는 수동으로 진행합니다. 반면, 지속적인 배포는 모든 과정을 자동화하여 코드 변경 사항이 자동으로 사용자에게 배포됩니다.

Android 앱의 경우, Fastlane과 같은 도구를 활용하여 앱 빌드, 테스트, 서명, Firebase App Distribution 배포 등의 과정을 자동화할 수 있습니다. 따라서 개발자는 코드 변경 사항을 푸시하는 것만으로도 앱 배포 과정을 완료할 수 있습니다.

CI/CD 시스템을 구축하면 개발, 테스트, 배포 과정을 자동화하여 개발 팀의 생산성을 향상시킬 수 있습니다. 또한, 코드 품질을 개선하고, 배포 시간을 단축하며, 위험을 줄이는 데 기여합니다.

📌 핵심 요약

  • ✓ ✓ CI/CD는 개발 효율과 안정성을 높이는 핵심 방법론
  • ✓ ✓ CI는 코드 통합 및 테스트 자동화로 문제 신속 해결
  • ✓ ✓ CD는 배포 자동화, 지속적 제공/배포 두 가지 형태
  • ✓ ✓ CI/CD 시스템 구축으로 생산성 향상 및 위험 감소

3. Github Actions 워크플로우 설계: Android 앱 빌드 자동화

Github Actions는 소프트웨어 개발 워크플로우를 자동화하는 강력한 도구입니다. Android 앱의 빌드 자동화는 Github Actions를 통해 효율적으로 구축할 수 있습니다. 워크플로우를 설계하기 전에 빌드 프로세스를 명확히 정의하는 것이 중요합니다. 이를 통해 불필요한 단계를 줄이고 효율성을 높일 수 있습니다.

→ 3.1 워크플로우 파일 구성

Github Actions 워크플로우는 YAML 파일로 정의됩니다. 일반적으로 .github/workflows 디렉토리에 위치합니다. 워크플로우 파일은 트리거 조건, 실행 환경, 작업 단계를 정의합니다. 예를 들어, 특정 브랜치에 푸시될 때마다 빌드가 실행되도록 설정할 수 있습니다.

워크플로우 파일의 주요 구성 요소는 다음과 같습니다.

  • name: 워크플로우의 이름
  • on: 워크플로우를 트리거하는 이벤트 (예: push, pull_request)
  • jobs: 실행할 작업들의 정의
  • runs-on: 작업을 실행할 환경 (예: ubuntu-latest, macos-latest)
  • steps: 각 작업 내에서 실행할 단계들

→ 3.2 Android 앱 빌드 단계 정의

Android 앱 빌드 자동화를 위한 워크플로우는 일반적으로 다음과 같은 단계를 포함합니다.

  1. 코드 체크아웃: actions/checkout@v3 액션을 사용하여 코드를 체크아웃합니다.
  2. JDK 설정: actions/setup-java@v3 액션을 사용하여 JDK (Java Development Kit)를 설정합니다. Android 앱 빌드에 필요한 JDK 버전을 지정해야 합니다.
  3. Android SDK 설정: android-actions/setup-android@v3 액션을 사용하여 Android SDK를 설정합니다. 필요한 Android SDK 버전을 설치합니다.
  4. Gradle 캐시 설정: Gradle 캐시를 설정하여 빌드 속도를 향상시킵니다.
  5. 빌드 실행: Gradle 명령어를 사용하여 앱을 빌드합니다 (예: ./gradlew assembleDebug).
  6. 테스트 실행: 단위 테스트 및 UI 테스트를 실행합니다.
  7. 빌드 결과물 저장: 빌드된 APK 또는 AAB 파일을 저장합니다.

예를 들어, 다음은 간단한 Android 앱 빌드 워크플로우 파일의 예시입니다.


name: Android CI

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up JDK 11
        uses: actions/setup-java@v3
        with:
          java-version: '11'
          distribution: 'temurin'
      - name: Setup Android SDK
        uses: android-actions/setup-android@v3
      - name: Grant execute permission for gradlew
        run: chmod +x gradlew
      - name: Build with Gradle
        run: ./gradlew assembleDebug

이 워크플로우는 main 브랜치에 푸시되거나 풀 리퀘스트가 생성될 때마다 실행됩니다. Ubuntu 환경에서 JDK 11을 설정하고, Android SDK를 설정한 후, Gradle을 사용하여 디버그 빌드를 수행합니다. 빌드 결과물은 이후 단계에서 활용할 수 있습니다.

4. Fastlane 연동 핵심 가이드: 5단계로 배포 과정 자동화

Fastlane은 Android 앱 배포 과정을 자동화하는 데 유용한 도구입니다. Fastlane을 Github Actions와 연동하면 CI/CD 파이프라인을 효율적으로 구축할 수 있습니다. 본 가이드에서는 Fastlane 연동을 위한 5가지 핵심 단계를 소개합니다. 이 단계를 따르면 배포 과정을 자동화하여 개발 생산성을 향상시킬 수 있습니다.

→ 4.1 1. Fastlane 초기 설정 및 구성

프로젝트에 Fastlane을 설치하고 초기 설정을 진행해야 합니다. 먼저, Android 프로젝트 루트 디렉토리로 이동합니다. 그 후 fastlane init 명령어를 실행하여 Fastlane을 초기화합니다. 초기화 과정에서 패키지 이름, 키 저장소 비밀번호 등의 정보를 입력해야 합니다. Fastlane 설정 파일 (Fastfile, Appfile)이 생성되었는지 확인합니다.

→ 4.2 2. Fastfile 설정: 배포 레인 정의

Fastfile은 배포 단계를 정의하는 핵심 파일입니다. 배포 레인(lane)을 정의하여 빌드, 테스트, 배포 단계를 자동화할 수 있습니다. 예를 들어, 'beta' 레인을 정의하여 테스트 버전 앱을 빌드하고 Firebase App Distribution에 업로드할 수 있습니다. 각 레인에는 필요한 액션(action)들을 순서대로 나열합니다.

→ 4.3 3. Github Secrets 설정: 보안 정보 관리

보안 정보 (키 저장소 비밀번호, Firebase API 키 등)를 Github Secrets에 안전하게 저장합니다. Github Secrets는 워크플로우에서 사용할 수 있는 환경 변수를 안전하게 관리하는 방법입니다. Settings > Secrets > Actions에서 필요한 Secret들을 추가합니다. 워크플로우 파일에서 ${{ secrets.YOUR_SECRET_NAME }} 형태로 접근할 수 있습니다.

→ 4.4 4. Github Actions 워크플로우 작성

Github Actions 워크플로우 파일을 작성하여 Fastlane 레인을 실행합니다. 워크플로우 파일 (.github/workflows/android_deploy.yml)을 생성하고, Fastlane을 실행하는 단계를 정의합니다. 먼저, Java, Android SDK, Gradle을 설치하고 설정합니다. 그 후, Fastlane을 설치하고, 정의한 레인을 실행합니다.

→ 4.5 5. Firebase App Distribution 연동 및 자동 배포

Firebase App Distribution을 사용하여 테스트 버전 앱을 자동으로 배포합니다. Fastlane의 firebase_app_distribution 액션을 사용하여 Firebase App Distribution에 앱을 업로드할 수 있습니다. Firebase Console에서 앱을 등록하고, API 키를 생성합니다. 생성된 API 키는 Github Secrets에 저장하여 워크플로우에서 사용합니다. 예를 들어, Fastfile에 다음과 같은 코드를 추가할 수 있습니다.

lane :beta do
  gradle(task: "assembleRelease")
  firebase_app_distribution(
    app: "YOUR_APP_ID",
    testers: "testers@example.com",
    firebase_cli_token: ENV["FIREBASE_CLI_TOKEN"]
  )
end

이 단계를 완료하면 코드 변경 시 자동으로 빌드, 테스트, Firebase App Distribution 배포가 진행됩니다. 이는 개발 및 QA 팀의 효율성을 높이는 데 기여합니다.

📊 Fastlane 자동화 핵심

단계 설명 추가 정보
1. 초기 설정 Fastlane 초기화 fastlane init 명령어 실행
2. Fastfile 설정 배포 레인 정의 빌드, 테스트, 배포 자동화
3. Secrets 설정 보안 정보 관리 키 저장소 비밀번호 등
4. 액션 추가 레인에 액션 추가 supply, pilot 등 활용
5. 깃헙 연동 CI/CD 파이프라인 구축 워크플로우 파일 설정

5. Firebase App Distribution 연동: 테스터에게 안정적인 배포

Firebase App Distribution은 테스터에게 앱을 안전하고 효율적으로 배포하는 데 유용한 도구입니다. Github Actions와 연동하면 앱 배포 과정을 자동화하여 테스트 효율성을 높일 수 있습니다. 이를 통해 개발자는 앱의 안정성을 확보하고 사용자 피드백을 빠르게 반영할 수 있습니다.

→ 5.1 Firebase App Distribution 설정

Firebase 프로젝트를 설정하고 Android 앱을 등록해야 합니다. Firebase 콘솔에서 App Distribution을 활성화하고 테스터를 추가합니다. 이후, Firebase CLI (Command Line Interface)를 설치하고 프로젝트에 로그인합니다. Firebase CLI는 앱 배포를 자동화하는 데 필요한 명령어를 제공합니다.

→ 5.2 Github Actions 워크플로우 구성

Github Actions 워크플로우 파일(.github/workflows/deploy.yml)을 생성하여 배포 과정을 정의합니다. 워크플로우는 앱 빌드, Fastlane 실행, Firebase App Distribution 업로드 단계를 포함합니다. Firebase App Distribution에 앱을 업로드하려면 Firebase CLI를 사용해야 하며, 이를 위해 Firebase 인증 토큰이 필요합니다.

→ 5.3 Fastlane을 이용한 배포 자동화

Fastlane을 사용하여 Firebase App Distribution 배포를 자동화할 수 있습니다. Fastlane 설정 파일(Fastfile)에 Firebase App Distribution 액션을 추가합니다. 이를 통해 앱 빌드 후 자동으로 Firebase App Distribution에 업로드되도록 설정할 수 있습니다. 예를 들어, 다음과 같은 Fastlane 액션을 사용할 수 있습니다.

lane :beta do
  gradle(task: "assembleRelease")
  firebase_app_distribution(
    app: "YOUR_APP_ID",
    testers: "tester1@example.com,tester2@example.com",
    release_notes: "New features and bug fixes"
  )
end

위 코드에서 YOUR_APP_ID는 Firebase 프로젝트의 앱 ID로 대체해야 합니다. testers에는 테스터 이메일 주소를 쉼표로 구분하여 입력합니다. release_notes에는 배포 노트 내용을 작성합니다.

→ 5.4 배포 및 테스트 진행

Github Actions 워크플로우가 성공적으로 실행되면 Firebase App Distribution에 앱이 업로드됩니다. 테스터는 이메일 또는 Firebase App Distribution 대시보드를 통해 앱을 다운로드하고 테스트할 수 있습니다. 테스터의 피드백을 수집하고 앱을 개선하는 과정을 반복합니다. 이를 통해 앱의 품질을 지속적으로 향상시킬 수 있습니다.

6. CI/CD 효율을 높이는 3가지 전문가 팁 & 흔한 실수

Android 앱 CI/CD (지속적 통합/지속적 배포) 파이프라인의 효율성을 높이기 위한 전문가 팁과 흔한 실수를 소개합니다. CI/CD는 개발 생산성을 향상시키고, 배포 과정을 간소화하는 데 중요한 역할을 합니다. 본 섹션에서는 CI/CD 워크플로우를 최적화하는 방법을 제시합니다.

→ 6.1 1. 빌드 캐싱 전략 최적화

빌드 시간을 단축하기 위해 캐싱 전략을 최적화해야 합니다. Gradle은 빌드 캐시를 지원하며, 이를 활용하여 의존성 및 빌드 결과물을 재사용할 수 있습니다. 캐시 키를 신중하게 설정하여 불필요한 캐시 무효화를 방지해야 합니다. 예를 들어, gradle.properties 파일의 변경 사항을 캐시 키에 포함하면, 해당 파일이 변경될 때만 캐시가 갱신됩니다.

→ 6.2 2. Fastlane 레인(Lane) 단순화 및 모듈화

Fastlane 레인(Lane)을 단순화하고 모듈화하여 유지보수성을 높일 수 있습니다. 복잡한 레인은 오류 발생 가능성이 높고, 수정이 어렵습니다. 따라서, 레인을 작은 기능 단위로 분리하고, 필요에 따라 재사용할 수 있도록 구성해야 합니다. 예를 들어, 코드 서명, 빌드, 테스트, 배포 단계를 각각 독립적인 레인으로 분리할 수 있습니다.

→ 6.3 3. Firebase App Distribution 그룹 관리 자동화

Firebase App Distribution 그룹 관리를 자동화하여 테스터 관리 효율성을 향상시킬 수 있습니다. Github Actions 워크플로우에서 Firebase CLI (Command Line Interface)를 사용하여 테스터 그룹을 자동으로 업데이트할 수 있습니다. 이를 통해, 새로운 테스터를 추가하거나 기존 테스터를 제거할 때마다 수동으로 Firebase 콘솔에 접속할 필요가 없습니다. 2026년 현재, Firebase App Distribution은 최대 2000명의 테스터를 지원합니다.

→ 6.4 흔한 실수: 과도한 의존성 및 라이브러리 사용

Android 앱 개발 시 과도한 의존성 및 라이브러리 사용은 빌드 시간을 증가시키고 앱 크기를 늘릴 수 있습니다. 불필요한 의존성을 제거하고, 필요한 라이브러리만 사용하는 것이 중요합니다. ProGuard 또는 R8과 같은 코드 난독화 및 축소 도구를 사용하여 앱 크기를 최적화할 수 있습니다. 또한, 동적 기능 모듈 (Dynamic Feature Modules)을 사용하여 앱의 초기 설치 크기를 줄일 수 있습니다.

📌 핵심 요약

  • ✓ ✓ 빌드 캐싱 전략 최적화로 빌드 시간 단축
  • ✓ ✓ Fastlane 레인 모듈화로 유지보수성 향상
  • ✓ ✓ Firebase 그룹 관리 자동화로 효율 증대
  • ✓ ✓ 과도한 의존성 사용은 빌드 성능 저하 유발

7. 자동 배포, 지금 바로 시작하세요!

자동 배포는 Android 앱 개발의 효율성을 극대화하는 핵심 단계입니다. Github Actions, Fastlane, Firebase App Distribution을 연동하여 자동 배포 환경을 구축할 수 있습니다. 이 섹션에서는 자동 배포를 위한 단계별 가이드와 유용한 팁을 제공합니다.

→ 7.1 자동 배포 설정 단계

자동 배포를 설정하는 과정은 다음과 같습니다. 먼저, Github Actions 워크플로우를 설정합니다. 그 다음 Fastlane을 연동하여 배포 과정을 자동화합니다. 마지막으로 Firebase App Distribution을 설정하여 테스터에게 앱을 배포합니다.

  • Github Actions 워크플로우 설정: 저장소에 .github/workflows 디렉토리를 생성하고 YAML 파일을 작성합니다.
  • Fastlane 연동: Fastfile을 설정하여 배포 단계를 정의합니다. 예를 들어, lane :beta do 블록에 배포 과정을 명시합니다.
  • Firebase App Distribution 설정: Firebase 콘솔에서 앱을 등록하고, 테스터를 추가합니다.

각 단계를 설정한 후에는 Github 저장소에 코드를 푸시할 때마다 자동으로 빌드, 테스트, 배포가 진행됩니다. 이를 통해 개발자는 배포 과정에 소요되는 시간을 절약하고, 코드 품질 향상에 집중할 수 있습니다.

→ 7.2 자동 배포 성공 사례

A사는 Github Actions, Fastlane, Firebase App Distribution을 연동하여 CI/CD 파이프라인을 구축했습니다. 그 결과, 앱 배포 시간이 50% 단축되었고, 테스트 빌드 배포 과정이 간소화되었습니다. 또한, 개발팀은 배포 과정에서 발생하는 오류를 줄이고, 개발 생산성을 향상시켰습니다.

→ 7.3 자동 배포 시 유의 사항

자동 배포를 설정할 때는 몇 가지 유의 사항이 있습니다. 첫째, 보안을 위해 API 키와 같은 민감한 정보는 Github Secrets에 안전하게 저장해야 합니다. 둘째, Fastlane 설정 파일을 꼼꼼하게 검토하여 배포 과정에서 오류가 발생하지 않도록 해야 합니다. 셋째, Firebase App Distribution에 등록된 테스터 목록을 주기적으로 업데이트하여 최신 버전의 앱을 테스터들이 사용할 수 있도록 해야 합니다.

자동 배포는 초기 설정에 시간이 소요될 수 있지만, 장기적으로 볼 때 개발 효율성을 크게 향상시키는 방법입니다. 지금 바로 자동 배포를 시작하여 Android 앱 개발 생산성을 높여보세요.

자동 배포, 오늘부터 당신의 개발 효율을 UP!

이번 포스팅에서는 Github Actions, Fastlane, Firebase App Distribution을 연동하여 Android 앱 CI/CD를 구축하는 방법을 알아봤습니다. 자동화된 배포 시스템 구축으로 개발 시간을 단축하고, 더욱 안정적인 앱을 사용자에게 제공할 수 있습니다. 이제 자동 배포 시스템을 구축하여 개발 생산성을 극대화해보세요!

📌 안내사항

  • 본 콘텐츠는 정보 제공 목적으로 작성되었습니다.
  • 법률, 의료, 금융 등 전문적 조언을 대체하지 않습니다.
  • 중요한 결정은 반드시 해당 분야의 전문가와 상담하시기 바랍니다.