Pengujian Semver Capgo
Periksa konsistensi kebijakan saluran terhadap dasar native yang dikirim sebagai versi_build
Versi native yang dikirim ke Capgo sebagai versi_build, dari konfigurasi atau metadata aplikasi native.
Versi bundle yang diberikan kepada saluran yang dipecahkan.
Apa itu "Versi Dasar Nama Lokal"
Versi Dasar Nama Lokal adalah versi aplikasi native yang dikirimkan ke Capgo sebagai
version_build ketika perangkat meminta server pembaruan untuk bundle. Dalam aplikasi Capacitor, nilai tersebut dapat berasal dari
CapacitorUpdater.version dalam capacitor.config.*Jika pengaturan tersebut tidak package.json
hadir, plugin kembali ke versi aplikasi native dari iOS atau Android. Jangan asumsikan itu adalah versi Anda kecuali Anda memindahkan nilai tersebut ke konfigurasi atau metadata native.
Capgo masih menggunakan version_name Tahu mana bundle yang telah diunduh saat ini yang terinstal. Channel kebijakan semver seperti major, minor, dan
patch bandingkan bundle remote terhadap version_build.
Capacitor konfigurasi
Set CapacitorUpdater.version ketika Anda ingin satu versi eksplisit dikirim oleh aplikasi.
Pro: mudah untuk menjaga yang sama di antara build iOS dan Android.
Kon: konfigurasi ketinggalan zaman dapat melaporkan versi yang salah jika Anda lupa untuk memperbarui sebelum rilis native.
Versi aplikasi native
Gunakan versi platform, seperti iOS CFBundleShortVersionString atau Android
versionName.
Pro: cocok dengan file biner yang diinstal dari TestFlight, App Store, Play Store, atau pengujian internal.
Con: mengubahnya memerlukan pembangunan native dan dapat berbeda antar platform jika pengaturan rilis bergeser.
Targeting Paket
Bandingkan dengan versi paket remote, aturan semver channel, atau konstrain unggah metadata seperti --min-update-versionSalah satu channel harus menggunakan --disable-auto-update metadata.
Pro: mencegah mengirim JavaScript yang memerlukan native code yang lebih baru ke file biner aplikasi lama.
Con: aturan yang terlalu ketat dapat menghalangi pembaruan yang valid sampai channel atau metadata paket diatur ulang.
For tester ini, masukkan basis data asli yang perangkat kirimkan sebagai version_build, kemudian bandingkan dengan versi bundle remote yang ingin Anda Capgo kirimkan.
Mengapa Capgo menggunakan Versi Semantik
Versi Semantik adalah standar versi yang paling luas diterima dalam pengembangan perangkat lunak. Dengan menggunakan semver, Capgo memastikan konsistensi dan keamanan ketika mengirimkan pembaruan hidup ke aplikasi Capacitor Anda.
Standar semver memungkinkan Capgo memahami secara tepat apa saja perubahan yang terkandung dalam setiap pembaruan:
- Pembaruan patch (1.0.0 → 1.0.1): Pembaruan bug, aman untuk diterapkan secara otomatis
- Pembaruan minor (1.0.0 → 1.1.0): Pembaruan fitur baru, kompatibel mundur
- Pembaruan mayor (1.0.0 → 2.0.0): Pembaruan perubahan besar, memerlukan rilis aplikasi toko native
Hal ini mencegah Capgo untuk pernah mengirimkan pembaruan yang tidak kompatibel ke native code, melindungi pengguna Anda dari crash dan memastikan aplikasi Anda tetap stabil.
Strategi Semver Fleksibel: Lebih dari Versi Dasar
Sementara semver ketat tentang format inti, Anda dapat memperluasnya untuk kebutuhan tim Anda menggunakan identifikasi pre-release dan metadata pembangunan:
🏷️ Metadata Pembangunan (+) - Layer Kosmetik
Perlu diingat: Metadata pembangunan diabaikan dalam urutan versi -
1.2.0+anything setara 1.2.0 untuk Capgo's logika pembaruan.
🔧 Identifikasi Prerelease (-) - Saluran Pengembangan
Catatan: Versi pra-rilis memiliki prioritas lebih rendah -
1.3.0-beta.1 < 1.3.0
🎯 Pendekatan Hibrida - Terbaik dari Kedua Dunia
Kasus Semver Nyata & Strategi Tim
🚀 Pengembangan Awal / Cepat
0.1.0 - Rilis MVP pertama0.2.0-beta.1 - Pengujian fitur baru0.2.0+ui.v2 - Metadata perancangan UI1.0.0 - Siap produksiPakai 0.x.x untuk pengembangan pra-1.0, metadata untuk pengawasan perancangan
🏢 Perusahaan / Regulasi
2.1.0 → Rilis Kuartal2.1.1+sec.patch.cve2024 → Patch Keamanan dengan Tracking2.2.0-rc.1+audit.ready → Kandidat Rilis Audit SebelumnyaSemver Ketat dengan Metadata Komplian
🎮 Aplikasi Permainan/Kreatif
1.0.0+season.winter.2024 → Konten Musiman1.1.0+event.halloween → Fitur Berdasarkan Acara1.2.0+assets.hd.remaster → Perbarui AssetMetadata Kreatif untuk Mengikuti Konten
⚡ Strategi Hotfix
1.2.0 → Produksi Saat Ini1.2.1-hotfix.payment → Perbaikan Bug Kritis1.2.1+urgent.20240315.1430 → Diterbitkan dengan timestampPre-release untuk tes, metadata untuk pelacakan pengiriman
🌍 Strategi Multi-Platform
1.3.0+ios.optimized → Optimasi iOS khusus1.3.0+android.material3 → Perbarui desain Android1.3.0+web.pwa.ready → Kemampuan PWAVersi yang sama, metadata spesifik platform
🔄 Integrasi CI/CD
1.4.0-alpha.1+build.123 → Pre-release otomatis1.4.0+deploy.staging.456 → Pengiriman staging1.4.0+prod.final.789 → Pengiriman produksiVersi otomatis dengan metadata pengiriman
- Pakai metadata pembangunan (+) untuk melacak, tanggal, atau informasi kosmetik yang tidak mempengaruhi konsistensi
- Pakai identifikasi pre-release (-) untuk saluran pengembangan yang memerlukan prioritas pembaruan yang berbeda
- Combina keduanya untuk fleksibilitas maksimum:
1.2.0-beta.1+ui.dark.theme.20240315 - Ingatlah: Capgo menghormati aturan semver, jadi rencanakan strategi saluran Anda dengan tepat
Penting: Capgo menggunakan semver yang ketat
Berbeda dengan implementasi semver npm, Capgo mengikuti spesifikasi SemVer secara ketat. npm memiliki node-semver yang memiliki deviasi yang diketahui dari spesifikasi, yang dapat menyebabkan perilaku yang tidak terduga
Misalnya, npm menganggap versi seperti 1.0.0-alpha.1
berbeda dengan yang diharuskan oleh spesifikasi. Lihat masalah yang telah dilaporkan
dan context
contoh perbaikan itu tidak pernah diverifikasi.
Versi Semantik yang Sah
1.0.0
✓ Rilis Standar
2.1.3-alpha
✓ Rilis Pra
1.0.0-beta.1
✓ Rilis Pra dengan Nomor
1.0.0+build.1
✓ Metadata Pembangunan
1.0.0-rc.1+build.1
✓ Versi Lengkap
Versi Semantik yang Tidak Sah
v1.0.0
✗ 'v' di awal tidak diizinkan
1.0
✗ Tidak ada versi patch
1.0.0.0
✗ Terlalu banyak bagian versi
1.0.0-
✗ Rilis pra kosong
1.0.0+
✗ Metadata Bangunan Kosong
Capgo Perilaku Perbarui
Ini adalah alat yang mengikuti spesifikasi Versi Semantik yang resmi berbeda dengan implementasi __CAPGO_KEEP_0__. unlike npm's implementation.