App Versioning
Semantic Versioning
Semua app menggunakan Semantic Versioning (SemVer):
MAJOR.MINOR.PATCH
│ │ └── Bug fix, patch (1.2.1 → 1.2.2)
│ └── New feature, backward compatible (1.2.0 → 1.3.0)
└── Breaking change, major redesign (1.x → 2.0.0)
Build Number
| Platform | Version Name | Build Number |
|---|---|---|
| Android | versionName ("1.2.3") | versionCode (auto-increment integer) |
| iOS | CFBundleShortVersionString ("1.2.3") | CFBundleVersion (auto-increment) |
| Flutter | version in pubspec.yaml ("1.2.3+45") | +buildNumber |
| RN Expo | version in app.json | ios.buildNumber / android.versionCode |
Auto-increment di CI
# Build number = CI pipeline ID
VERSION_CODE=$CI_PIPELINE_IID
# Android
sed -i "s/versionCode [0-9]*/versionCode $VERSION_CODE/" app/build.gradle.kts
# iOS (Fastlane)
fastlane run increment_build_number build_number:$VERSION_CODE
peringatan
Build number harus selalu naik untuk setiap upload ke store. Jangan gunakan number yang sama untuk 2 build berbeda.