Bu dokümantasyon, Azure DevOps On-Premise Mobile App projesinde versiyon yönetimi ve otomatik build/deploy süreçlerini açıklar.
- Versiyon Numaralandırma
- Otomatik Versiyon Artırma
- Build ve Deploy Script'leri
- Git Tag Yönetimi
- Versiyon Gösterimi
- Kullanım Örnekleri
Proje Semantic Versioning (SemVer) standardını kullanır:
MAJOR.MINOR.PATCH+BUILD_NUMBER
- MAJOR: Büyük değişiklikler, geriye dönük uyumsuzluklar
- MINOR: Yeni özellikler, geriye dönük uyumlu
- PATCH: Hata düzeltmeleri, küçük iyileştirmeler
- BUILD_NUMBER: Her build'de otomatik artırılan sayı
1.0.2+3
│ │ │ └─ Build number: 3
│ │ └─── Patch version: 2
│ └───── Minor version: 0
└─────── Major version: 1
Versiyon bilgisi pubspec.yaml dosyasında saklanır:
version: 1.0.2+3scripts/bump_version.sh script'i versiyonu otomatik olarak artırır ve git tag oluşturur.
./scripts/bump_version.sh [patch|minor|major]- patch (varsayılan): Patch versiyonunu artırır (1.0.2 → 1.0.3)
- minor: Minor versiyonunu artırır (1.0.2 → 1.1.0)
- major: Major versiyonunu artırır (1.0.2 → 2.0.0)
# Patch versiyonunu artır (1.0.2 → 1.0.3)
./scripts/bump_version.sh patch
# Minor versiyonunu artır (1.0.2 → 1.1.0)
./scripts/bump_version.sh minor
# Major versiyonunu artır (1.0.2 → 2.0.0)
./scripts/bump_version.sh major- Mevcut versiyonu
pubspec.yaml'dan okur - Belirtilen tipe göre versiyonu artırır
- Build number'ı otomatik artırır
pubspec.yamldosyasını günceller- Git commit oluşturur
- Git tag oluşturur (veya mevcut tag'i günceller)
scripts/build_and_deploy.sh script'i tüm build, deploy ve push işlemlerini otomatik olarak yapar.
./scripts/build_and_deploy.sh [patch|minor|major]- Versiyon Artırma:
bump_version.shscript'ini çalıştırır - APK Build: Flutter release APK'sını derler
- APK Yeniden Adlandırma:
app-release.apk→azuredevops.apk - Cihaz Kontrolü: Bağlı Android cihazı kontrol eder
- APK Yükleme: Cihaz varsa APK'yı yükler
- Uygulama Başlatma: Uygulamayı otomatik başlatır
- Git Push: Değişiklikleri ve tag'i GitHub'a push eder
# Patch versiyonu ile build ve deploy
./scripts/build_and_deploy.sh patch
# Minor versiyonu ile build ve deploy
./scripts/build_and_deploy.sh minor
# Major versiyonu ile build ve deploy
./scripts/build_and_deploy.sh major- APK Dosyası:
build/app/outputs/flutter-apk/azuredevops.apk - Git Tag:
v1.0.2formatında - Git Commit:
chore(release): Bump version to X.Y.Z+BUILD
Git tag'leri şu formatta oluşturulur:
vMAJOR.MINOR.PATCH
Örnek: v1.0.2
Script otomatik olarak tag oluşturur:
git tag -a v1.0.2 -m "Release v1.0.2"Eğer tag zaten varsa, script otomatik olarak siler ve yeniden oluşturur:
git tag -d v1.0.2
git tag -a v1.0.2 -m "Release v1.0.2"git push origin v1.0.2Mevcut tag'leri görmek için:
git tag -lUygulama içinde versiyon bilgisi AppBar'da gösterilir.
- Logo ve Başlık: Üst satırda
- Versiyon: Logo ve başlığın altında, ayrı bir satırda
v1.0.2+3
- Font boyutu: 11px
- Renk: Beyaz, %70 opacity
- Font ağırlığı: Normal
- Konum: Logo ve "AzureDevOps" metninin altında, ortalanmış
Versiyon bilgisi package_info_plus paketi kullanılarak dinamik olarak alınır:
final packageInfo = await PackageInfo.fromPlatform();
final version = 'v${packageInfo.version}+${packageInfo.buildNumber}';# Hata düzeltmesi yapıldı, patch versiyonu artır
./scripts/build_and_deploy.sh patchSonuç:
- Versiyon:
1.0.2+3→1.0.3+4 - Tag:
v1.0.3 - APK derlenir ve telefona yüklenir
- GitHub'a push edilir
# Yeni özellik eklendi, minor versiyonu artır
./scripts/build_and_deploy.sh minorSonuç:
- Versiyon:
1.0.2+3→1.1.0+4 - Tag:
v1.1.0 - APK derlenir ve telefona yüklenir
- GitHub'a push edilir
# Sadece versiyonu artır, build yapma
./scripts/bump_version.sh patchSonuç:
- Versiyon:
1.0.2+3→1.0.3+4 - Tag:
v1.0.3 - Git commit oluşturulur
- Build yapılmaz
# Versiyon artırmadan sadece build yap
export JAVA_HOME=/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home
flutter build apk --release
mv build/app/outputs/flutter-apk/app-release.apk build/app/outputs/flutter-apk/azuredevops.apk- Flutter SDK yüklü olmalı
- Git yapılandırılmış olmalı
- Android SDK yüklü olmalı (deploy için)
- Java 17 yüklü olmalı
Script'lerde kullanılan sabit yollar:
# Flutter path
/Users/alpaybilgic/flutter/bin/flutter
# Java path
/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home
# ADB path
/Users/alpaybilgic/Library/Android/sdk/platform-tools/adbNot: Farklı bir sistemde kullanıyorsanız, bu yolları script'lerde güncellemeniz gerekebilir.
- Patch: Hata düzeltmeleri, küçük iyileştirmeler
- Minor: Yeni özellikler, geriye dönük uyumlu değişiklikler
- Major: Büyük değişiklikler, API değişiklikleri, geriye dönük uyumsuzluklar
Script otomatik olarak şu formatta commit mesajı oluşturur:
chore(release): Bump version to X.Y.Z+BUILD [skip ci]
GitHub Actions workflow'ları [skip ci] tag'ini tanır ve bu commit'lerde CI/CD çalıştırmaz, böylece sonsuz döngü önlenir.
Eğer tag zaten varsa, script otomatik olarak siler ve yeniden oluşturur. Manuel olarak silmek için:
git tag -d v1.0.2
git push origin :refs/tags/v1.0.2pubspec.yaml dosyasını kontrol edin:
grep version pubspec.yamlJava versiyonunu kontrol edin:
echo $JAVA_HOME
java -versionJava 17 olmalı.
ADB ile cihazı kontrol edin:
adb devicesUSB debugging açık olmalı ve cihaz yetkilendirilmiş olmalı.
pubspec.yaml: Versiyon bilgisiscripts/bump_version.sh: Versiyon artırma script'iscripts/build_and_deploy.sh: Build ve deploy script'ilib/screens/home_screen.dart: Versiyon gösterimi.github/workflows/android-build.yml: CI/CD workflow
Son Güncelleme: 2025-12-18
Versiyon: 1.0.2+3