Lewati ke konten utama

CI/CD Pipeline

Pipeline Stages​

Per Platform​

PlatformCI ToolBuild ToolDistribution
AndroidGitLab CI / GitHub ActionsGradleFirebase App Distribution / Play Console
iOSGitLab CI / GitHub ActionsXcode + xcodebuildTestFlight / App Store Connect
FlutterGitLab CI / GitHub ActionsFlutter CLIFirebase App Distribution / Stores
RN CLIGitLab CI / GitHub ActionsGradle + xcodebuildFirebase App Distribution / Stores
RN ExpoEAS Build (cloud)Expo CLIEAS Submit / Stores

GitLab CI Example (Flutter)​

stages:
- analyze
- test
- build
- deploy

analyze:
stage: analyze
script:
- flutter analyze
- dart format --set-exit-if-changed .

test:
stage: test
script:
- flutter test --coverage
coverage: '/lines\.*:\s*(\d+\.\d+)%/'
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: coverage/cobertura.xml

build:android:
stage: build
script:
- flutter build apk --release --obfuscate --split-debug-info=build/debug-info
artifacts:
paths:
- build/app/outputs/flutter-apk/app-release.apk
only:
- develop
- /^release\/.*$/
- main

deploy:staging:
stage: deploy
script:
- firebase appdistribution:distribute build/app/outputs/flutter-apk/app-release.apk
--app $FIREBASE_APP_ID
--groups "qa-testers"
only:
- develop
Secrets Management

Signing keys, API keys, dan service account credentials harus disimpan di CI/CD Variables (masked & protected), bukan di repository.