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/cachebiasanya dikelola actionsubosito/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
⏳ Memuat komentar...
Tulis Komentar