Lompat ke konten utama

Capgo Semver Tester

Cek kompatibilitas kebijakan channel terhadap baseline native yang dikirim sebagai version_build

Versi native yang dikirim ke Capgo sebagai version_build, dari config atau metadata native app.

Versi bundle yang ditetapkan ke channel yang dipilih.

Masukkan dua versi semver untuk melihat perbandingannya

Arti dari "Native Baseline Version"

Native Baseline Version adalah versi native app yang dikirim ke Capgo sebagai version_build saat perangkat meminta bundle ke update server. Pada aplikasi Capacitor, nilai tersebut bisa berasal dari CapacitorUpdater.version di capacitor.config.*. Jika pengaturan tersebut tidak ada, plugin akan menggunakan versi native app dari iOS atau Android. Jangan berasumsi itu adalah versi package.json kecuali build Anda menyalin nilai tersebut ke dalam config atau metadata native.

Capgo tetap menggunakan version_name untuk mengetahui bundle mana yang terinstal saat ini. Kebijakan semver Channel seperti major, minor, dan patch membandingkan bundle remote dengan version_build.

konfigurasi Capacitor

Atur CapacitorUpdater.version saat Anda ingin aplikasi mengirimkan satu versi eksplisit.

Pro: mudah disamakan di build iOS dan Android.

Kontra: konfigurasi usang bisa melaporkan versi yang salah jika Anda lupa memperbaruinya sebelum rilis native.

Versi aplikasi native

Gunakan versi platform, misalnya iOS CFBundleShortVersionString atau Android versionName.

Pro: sesuai dengan binary yang dipasang pengguna dari TestFlight, App Store, Play Store, atau internal testing.

Kontra: mengubahnya memerlukan Native Build dan bisa berbeda tiap platform jika pengaturan rilis berubah.

Targeting Bundle

Bandingkan dengan versi bundle remote, aturan semver channel, atau batasan upload metadata seperti --min-update-version. Channel harus menggunakan --disable-auto-update metadata.

Pro: mencegah pengiriman JavaScript yang butuh code native lebih baru ke binary app lama.

Kontra: aturan yang terlalu ketat dapat memblokir update valid sampai metadata channel atau bundle disesuaikan.

Untuk tester ini, masukkan baseline native yang dikirim perangkat sebagai version_build, lalu bandingkan dengan versi bundle remote yang ingin dikirim oleh Capgo.

Mengapa Capgo menggunakan Semantic Versioning

Semantic Versioning adalah standar versioning yang paling banyak digunakan dalam pengembangan software. Dengan semver, Capgo memastikan kompatibilitas dan keamanan saat mengirimkan live updates ke aplikasi Capacitor Anda.

Standar semver memungkinkan Capgo memahami dengan tepat perubahan apa saja yang ada di setiap update:

  • Update patch (1.0.0 → 1.0.1): Perbaikan bug, aman untuk diterapkan secara otomatis
  • Pembaruan minor (1.0.0 → 1.1.0): Fitur baru, tetap backward compatible
  • Pembaruan major (1.0.0 → 2.0.0): Breaking changes, butuh rilis native app store

Ini mencegah Capgo mengirimkan update yang tidak kompatibel ke code native Anda, melindungi user dari crash dan menjaga aplikasi tetap stabil.

Strategi Semver yang fleksibel: lebih dari sekadar versioning dasar

Meskipun semver sangat ketat pada format intinya, Anda bisa mengembangkannya sesuai kebutuhan tim menggunakan identifikasi pre-release dan metadata build:

🏷️ Build Metadata (+) - Lapisan "Kosmetik"

1.2.0+20240315.142530
Timestamp untuk pelacakan deployment
1.2.0+ui.refresh.dark-mode
Deskripsi update UI untuk tim desain
1.2.0+build.4729.commit.a1b2c3d
Nomor build CI/CD dan git commit

Penting: Build metadata diabaikan dalam prioritas versi - 1.2.0+anything sama dengan 1.2.0 untuk logika update Capgo.

🔧 Identifier Pre-release (-) - Channel Pengembangan

1.3.0-beta.1
Channel testing beta
1.3.0-hotfix.payment
Branch perbaikan mendesak
1.3.0-feature.newapi
Testing branch fitur

Catatan: Versi pre-release memiliki prioritas lebih rendah - 1.3.0-beta.1 < 1.3.0

🎯 Hybrid Approach - Solusi Terbaik

1.3.0-rc.1+ui.redesign.20240315
Release candidate dengan metadata UI dan timestamp

Kasus Penggunaan Semver & Strategi Tim di Dunia Nyata

🚀 Startup / Pengembangan Cepat

0.1.0 - Rilis MVP pertama
0.2.0-beta.1 - Testing fitur baru
0.2.0+ui.v2 - Metadata desain ulang UI
1.0.0 - Siap untuk Production

Gunakan 0.x.x untuk pengembangan pre-1.0, gunakan metadata untuk tracking desain

🏢 Enterprise / Terregulasi

2.1.0 → Rilis kuartalan
2.1.1+sec.patch.cve2024 → Security patch dengan tracking
2.2.0-rc.1+audit.ready → Release candidate pra-audit

Semver ketat dengan metadata kepatuhan

🎮 Aplikasi Gaming / Kreatif

1.0.0+season.winter.2024 → Konten musiman
1.1.0+event.halloween → Fitur berbasis event
1.2.0+assets.hd.remaster → Update aset

Metadata kreatif untuk tracking konten

⚡ Strategi Hotfix

1.2.0 → Produksi saat ini
1.2.1-hotfix.payment → Perbaikan bug kritis
1.2.1+urgent.20240315.1430 → Rilis dengan timestamp

Pre-release untuk testing, metadata untuk tracking deployment

🌍 Strategi Multi-Platform

1.3.0+ios.optimized → Optimasi khusus iOS
1.3.0+android.material3 → Update desain Android
1.3.0+web.pwa.ready → Kapabilitas PWA

Versi sama, metadata spesifik platform

🔄 Integrasi CI/CD

1.4.0-alpha.1+build.123 → Pre-release otomatis
1.4.0+deploy.staging.456 → Deployment staging
1.4.0+prod.final.789 → Deployment production

Versioning otomatis dengan metadata deployment

💡 Tips Pro:
  • Gunakan build metadata (+) untuk tracking, timestamp, atau info kosmetik yang tidak memengaruhi kompatibilitas
  • Gunakan identifier pre-release (-) untuk channel development yang butuh prioritas update berbeda
  • Gabungkan keduanya untuk fleksibilitas maksimal: 1.2.0-beta.1+ui.dark.theme.20240315
  • Ingat: Capgo mengikuti aturan prioritas semver, jadi rencanakan strategi channel Anda sesuai itu

Penting: Capgo menggunakan semantic versioning yang ketat

Berbeda dengan implementasi semver npm, Capgo mengikuti spesifikasi resmi SemVer secara ketat. node-semver milik npm memiliki penyimpangan dari spesifikasi yang dapat menyebabkan perilaku tidak terduga.

Sebagai contoh, npm memperlakukan versi seperti 1.0.0-alpha.1 berbeda dari ketentuan spesifikasi. Lihat issue yang dilaporkan dan upaya perbaikan yang tidak pernah di-merge.

Semantic Version yang Valid

1.0.0 ✓ Rilis standar
2.1.3-alpha ✓ Pre-release
1.0.0-beta.1 ✓ Pre-release dengan angka
1.0.0+build.1 ✓ Metadata build
1.0.0-rc.1+build.1 ✓ Versi lengkap

Semantic Version Tidak Valid

v1.0.0 ✗ Karakter 'v' di depan tidak diizinkan
1.0 ✗ Patch version hilang
1.0.0.0 ✗ Bagian versi terlalu banyak
1.0.0- ✗ Pre-release kosong
1.0.0+ ✗ Build metadata kosong

Perilaku Capgo Update

✓ Strategi Minor mengizinkan perubahan patch pada baris major.minor yang sama, contoh 1.0.0 -> 1.0.1
✓ Strategi Patch memblokir 1.0.0 -> 1.0.1. Hanya mengizinkan perubahan suffix seperti 1.0.0-beta.1 -> 1.0.0-beta.2.
✗ Blok strategi Major menargetkan bundle dengan versi major lebih tinggi dari baseline native, contohnya 1.0.0 -> 2.0.0
⚠ Proteksi downgrade menggunakan presedensi semver penuh, jadi versi stabil 1.0.0 lebih baru dari 1.0.0-beta.2

Tool ini mengikuti spesifikasi resmi Spesifikasi Semantic Versioning tidak seperti implementasi npm.