CI/CD Flutter di GitHub Actions (Android/iOS/Web)

CI/CD Flutter di GitHub Actions (Android/iOS/Web)


Artikel ini menyiapkan pipeline dasar di GitHub Actions agar build/test Flutter otomatis pada push/PR. Kita kombinasikan matrix job, cache, dan artifacts.


1) Struktur Dasar Workflow

Buat .github/workflows/flutter-ci.yml di repo aplikasi Flutter Anda:

name: Flutter CI

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

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        platform: [ android, web ]

    steps:
      - uses: actions/checkout@v4

      - name: Setup Java (Android)
        if: matrix.platform == 'android'
        uses: actions/setup-java@v4
        with:
          distribution: temurin
          java-version: '17'

      - name: Setup Flutter
        uses: subosito/flutter-action@v2
        with:
          channel: stable

      - name: Cache Pub
        uses: actions/cache@v4
        with:
          path: |
            ~/.pub-cache
          key: ${{ runner.os }}-pub-${{ hashFiles('**/pubspec.lock') }}

      - name: Flutter Pub Get
        run: flutter pub get

      - name: Analyze & Test
        run: |
          flutter analyze
          flutter test

      - name: Build
        run: |
          if [ "${{ matrix.platform }}" = "android" ]; then
            flutter build apk --debug
          else
            flutter build web --release
          fi

      - name: Upload Artifacts
        uses: actions/upload-artifact@v4
        with:
          name: ${{ matrix.platform }}-build
          path: |
            build/app/outputs/**/*.apk
            build/web

Catatan:

  • iOS build butuh macOS runner (biaya lebih tinggi); contoh ada di bagian berikut.

2) iOS Build di macOS Runner (Opsional)

Tambahkan job terpisah:

  build-ios:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Xcode toolchain
        run: xcodebuild -version

      - name: Setup Flutter
        uses: subosito/flutter-action@v2
        with:
          channel: stable

      - name: Cache Pub
        uses: actions/cache@v4
        with:
          path: |
            ~/.pub-cache
          key: ${{ runner.os }}-pub-${{ hashFiles('**/pubspec.lock') }}

      - name: Install Pods
        run: |
          cd ios
          pod install --repo-update

      - name: Build iOS (ipa)
        run: |
          flutter build ipa --no-codesign

      - name: Upload Artifacts
        uses: actions/upload-artifact@v4
        with:
          name: ios-build
          path: build/ios/ipa/*.ipa

Untuk distribusi ke TestFlight, integrasikan Fastlane atau App Store Connect API (topik lanjutan).


3) Optimalisasi Cache

  • Cache Gradle (~/.gradle/caches) untuk Android.
  • Cache CocoaPods (~/.cocoapods) untuk iOS.
  • Cache Flutter bin/cache biasanya dikelola action subosito/flutter-action, namun bisa ditambah jika perlu.

4) Menggunakan FVM di CI

Jika proyek memakai FVM, ganti step “Setup Flutter” dengan aktivasi FVM seperti contoh pada artikel FVM. Pastikan .fvm/fvm_config.json ada di repo.


Ringkasan

Dengan GitHub Actions, Anda mendapatkan build/test otomatis lintas platform, artifacts yang siap diunduh, serta cache yang mempercepat pipeline. Tambahkan signing dan deploy bertahap untuk CD penuh.

💬 Komentar

Real-time

⏳ Memuat komentar...

Tulis Komentar

Email tidak akan ditampilkan

0/2000 karakter

⚠️ Catatan: Komentar akan dimoderasi sebelum ditampilkan. Mohon bersikap sopan dan konstruktif.