Flutter

Flutter의 CI/CD 설정 방법과 활용

wsstar 2025. 3. 29. 15:00
728x90
반응형

Flutter의 CI/CD 설정 방법과 활용

Flutter 앱을 개발할 때, CI/CD(Continuous Integration / Continuous Deployment)를 활용하면 코드 변경 사항을 자동으로 빌드하고 테스트하며, 배포할 수 있습니다. 이를 통해 개발 생산성을 높이고, 배포 시간을 단축할 수 있습니다.

이 글에서는 Flutter에서 CI/CD 환경을 설정하고 자동화하는 방법을 설명하고, GitHub Actions을 활용한 실제 설정 예제를 소개하겠습니다.


1. CI/CD란?

CI/CD(지속적 통합 및 지속적 배포)는 애플리케이션을 자동으로 빌드, 테스트, 배포하는 프로세스를 의미합니다.

  • CI (Continuous Integration, 지속적 통합): 코드 변경 사항을 자동으로 병합하고 테스트
  • CD (Continuous Deployment, 지속적 배포): 검증된 코드를 자동으로 배포

Flutter에서 CI/CD를 적용하면 다음과 같은 장점이 있습니다.

  • 자동 빌드 및 테스트: 코드 변경 시 자동으로 테스트 실행
  • 배포 시간 단축: 앱을 Play Store 및 App Store에 빠르게 배포
  • 안정적인 코드 관리: 코드 품질 유지 및 릴리즈 자동화

이제 Flutter 프로젝트에서 CI/CD 환경을 설정하는 방법을 살펴보겠습니다.


2. Flutter CI/CD 설정 환경

(1) Flutter 프로젝트 준비

Flutter 프로젝트가 있어야 하며, flutter_test 패키지가 필요합니다.


flutter pub add flutter_test --dev

(2) CI/CD에서 수행할 작업

CI/CD 파이프라인에서 다음과 같은 작업을 수행할 수 있습니다.

  • Flutter 프로젝트 설정
  • 의존성 설치 (flutter pub get)
  • 유닛 테스트 실행 (flutter test)
  • 테스트 커버리지 측정 (flutter test --coverage)
  • 앱 빌드 (flutter build apkflutter build ios)
  • 앱 배포 (Google Play 및 App Store)

이제 GitHub Actions을 활용하여 CI/CD를 설정하는 방법을 살펴보겠습니다.


3. GitHub Actions을 활용한 CI/CD 설정

GitHub Actions을 사용하면 GitHub 저장소에서 직접 CI/CD를 실행할 수 있습니다.

(1) GitHub Actions 워크플로우 파일 생성

GitHub 저장소에서 .github/workflows/flutter-ci.yml 파일을 생성합니다.


mkdir -p .github/workflows
touch .github/workflows/flutter-ci.yml

(2) GitHub Actions CI/CD 설정

다음은 Flutter 프로젝트에서 CI/CD를 자동화하는 GitHub Actions 설정 예제입니다.


name: Flutter CI/CD

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build-test:
    runs-on: ubuntu-latest
    steps:
      - name: 저장소 체크아웃
        uses: actions/checkout@v2

      - name: Flutter 설정
        uses: subosito/flutter-action@v2
        with:
          flutter-version: "3.0.0"

      - name: 의존성 설치
        run: flutter pub get

      - name: 코드 포맷 검사
        run: flutter format --set-exit-if-changed .

      - name: 유닛 테스트 실행
        run: flutter test --coverage

      - name: APK 빌드
        run: flutter build apk --release

이제 코드를 GitHub에 푸시하면 자동으로 빌드와 테스트가 실행됩니다.


4. Firebase App Distribution을 이용한 배포 자동화

Flutter 앱을 Firebase App Distribution을 사용하여 내부 테스터에게 배포할 수 있습니다.

(1) Firebase CLI 설치


curl -sL https://firebase.tools | bash

(2) Firebase 인증


firebase login

(3) Firebase App Distribution을 활용한 배포


- name: Firebase App Distribution 배포
  run: |
    firebase appdistribution:distribute build/app/outputs/flutter-apk/app-release.apk \
      --app YOUR_FIREBASE_APP_ID \
      --groups internal-testers \
      --release-notes "New release from GitHub Actions"

이제 CI/CD 파이프라인을 통해 앱을 Firebase App Distribution에 자동으로 배포할 수 있습니다.


5. Google Play Store 자동 배포

Flutter 앱을 Google Play Store에 자동으로 배포하려면 fastlane을 사용할 수 있습니다.

(1) Fastlane 설치


gem install fastlane

(2) Fastlane 설정


cd android
fastlane init

(3) Fastlane 배포 스크립트 추가

android/fastlane/Fastfile에 다음 코드를 추가합니다.


platform :android do
  desc "Google Play Store 배포"
  lane :deploy do
    gradle(task: "bundleRelease")
    upload_to_play_store(track: "internal")
  end
end

(4) GitHub Actions에서 Fastlane 실행


- name: Fastlane으로 Google Play Store 배포
  run: |
    cd android
    fastlane deploy

결론

Flutter에서 CI/CD를 활용하면 앱 개발 및 배포 프로세스를 자동화할 수 있습니다.

  • GitHub Actions를 사용하여 빌드 및 테스트 자동화
  • Firebase App Distribution을 이용한 내부 배포
  • Fastlane을 활용한 Google Play Store 자동 배포

이제 CI/CD를 설정하여 더욱 효율적인 Flutter 앱 개발 및 배포 환경을 구축해 보세요!

728x90
반응형