Lebihkan ke konten

Alur Kerja Native + OTA Channel

Sebuah pengaturan Capgo yang umum menggunakan sebuah dev saluran dan sebuah produksi saluran. CI mengunggah setiap bundle OTA ke dev, kemudian mempromosikan ke production ketika Anda sudah siap. Tim sering menambahkan --fail-on-incompatible sehingga CI tidak dapat mengirimkan pembaruan hidup yang memerlukan native code baru secara tidak sengaja.

Pertanyaan ini menjawab pertanyaan lanjutan: apa yang harus Anda lakukan ketika Anda secara sengaja membutuhkan bundle yang tidak kompatibel dengan native package saluran saat ini?

Jika Anda membutuhkan latar belakang mengapa Capgo membandingkan native package, mulai dengan Kompatibilitas Native. Untuk cabang CI penuh yang memilih OTA vs Capgo Build secara otomatis, lihat Auto OTA atau Native.

Judul bagian “Rancangan saluran yang direkomendasikan”

Panduan ini asumsikan Anda telah memiliki saluran yang sudah ada. Buatlah terlebih dahulu jika diperlukan: dev Tampilan terminal production Salin ke clipboard

Saluran
npx @capgo/cli@latest channel add production com.example.app
npx @capgo/cli@latest channel add dev com.example.app
Upload biasaRilis internal / QASetiap push CI JavaScript (dan dasar native yang sengaja)
devSetiap push CI JavaScript (dan dasar native yang sengaja)Rancangan saluran yang direkomendasikan
productionPenyimpanan penggunaDitampilkan atau diunggah hanya ketika siap rilis

--fail-on-incompatible adalah pilihan default yang baik pada kedua saluran untuk pengunggahan OTA sehari-hari. Ini membandingkan paket native di dalam bundle yang Anda unggah terhadap bundle yang sedang berjalan pada saluran tersebutJika mereka berbeda, proses unggah berakhir dengan kode keluaran non-nol dan tidak ada yang dikirim.

Ketika perubahan hanya JavaScript dan paket native sesuai dengan saluran:

Jendela terminal
npx @capgo/cli@latest bundle upload com.example.app \
--channel production \
--fail-on-incompatible \
--auto-min-update-version

--fail-on-incompatible mengganggu kenaikan native secara tidak sengaja. --auto-min-update-version is wajib pada setiap unggahan setelah saluran menggunakan strategi (direkomendasikan di bawah). Jika saluran belum menggunakan strategi ini, Anda dapat mengabaikan metadata strategi ini (direkomendasikan di bawah). Jika saluran belum menggunakan strategi ini, Anda dapat mengabaikan metadata strategi ini (direkomendasikan di bawah). Jika saluran belum menggunakan strategi ini, Anda dapat mengabaikan --auto-min-update-version strategi ini (direkomendasikan di bawah). Jika saluran belum menggunakan strategi ini, Anda dapat mengabaikan

Opsi pintu masuk CI sebelum unggahan:

Jendela terminal
npx @capgo/cli@latest bundle releaseType com.example.app --channel production
# → OTA safe to upload with --fail-on-incompatible
# → native stop; ship a native binary first (see below)

Kenaikan native sengaja (hilangkan flag sekali)

Bagian berjudul “Kenaikan native sengaja (hilangkan flag sekali)”

Anda context unggah sebuah bundle yang memerlukan code native baru sementara menjaga --fail-on-incompatibleflag tersebut ada untuk menghalangi kasus tersebut secara tepat. Ketika plugin, Capacitor versi, atau dependensi native lainnya berubah secara sengaja:

  1. Kirimkan versi binary native yang sesuai (App Store / Play Store, atau __CAPGO_KEEP_0__ Build Capgo Build).
  2. tanpa Lebih baik --fail-on-incompatible.
  3. dengan saluran pada strategi sehingga perangkat yang masih menggunakan binary lama tidak menerima bundle baru sampai mereka menginstal aplikasi baru. --auto-min-update-version Setelah itu, unggah __CAPGO_KEEP_0__ dasar metadata native binary
  4. (App Store / Play Store, or __CAPGO_KEEP_0__ Build --fail-on-incompatible Kembali ke OTA CI normal (dan tetapkan) --auto-min-update-version Sementara saluran tetap pada metadata).
  1. Satu kali per saluran: aktifkan pengaturan metadata

    Jendela terminal
    npx @capgo/cli@latest channel set production com.example.app --disable-auto-update metadata

    Ulangi untuk dev Jika saluran tersebut juga menerima native baseline sengaja. Setelah perubahan ini, setiap unggahan ke saluran harus termasuk --auto-min-update-version atau --min-update-version.

  2. Bagaimana jika Anda ingin mengganti saluran yang ada?

    Kirimkan binary native

  3. Buat dan kirimkan aplikasi iOS/Android yang termasuk plugin atau perubahan native baru. Sampai pengguna menginstal binary tersebut, mereka tidak dapat menjalankan bundle yang bergantung pada paket native tersebut dengan aman. --fail-on-incompatible)

    Unggah baseline OTA yang sesuai (tidak termasuk)
    npx @capgo/cli@latest bundle upload com.example.app \
    --channel production \
    --auto-min-update-version

    Hal ini merekam paket native baru di saluran. Kemudian bundle releaseType / --fail-on-incompatible periksa menggunakan dasar tersebut.

  4. Tetapkan ulang unggahan OTA yang dilindungi

    Rilis JS-only berikutnya menggunakan kedua flag lagi:

    Jendela terminal
    npx @capgo/cli@latest bundle upload com.example.app \
    --channel production \
    --fail-on-incompatible \
    --auto-min-update-version

Bagian berjudul “Banyak Tanya Jawab” --fail-on-incompatible Apakah saya bisa tetap

dan masih bisa mengirimkan paket yang tidak kompatibel dengan native?

Bagian berjudul “Apakah saya bisa tetap --fail-on-incompatible dan masih bisa mengirimkan paket yang tidak kompatibel dengan native?” --auto-min-update-version Tidak. Jika paket native upload berbeda dengan paket live channel, flag tersebut akan gagal secara sengaja. Untuk peningkatan native yang sengaja, abaikan flag tersebut pada upload tersebut (dan gunakan

Bagian berjudul “Apakah upload sekali saja tanpa flag yang tepat adalah pendekatan yang tepat?”

Apakah saya harus mengunggah ke dev pertama, kemudian production?

Judul bagian “Apakah saya harus mengunggah ke dev pertama, kemudian produksi?”

Ya, jika itu sesuai dengan proses Anda. Jalankan aturan yang sama per saluran: cek kompatibilitas dilakukan terhadap apa yang sedang hidup di saluran target. Promosikan atau unggah ulang ke production hanya setelah dev terlihat baik, dan gunakan unggahan dasar native (tanpa --fail-on-incompatible) pada setiap saluran yang memerlukan paket native baru direkam.

Apa jika saya mengunggah paket native baru dengan flag masih aktif?

Judul bagian “Apa jika saya mengunggah paket native baru dengan flag masih aktif?”

CI gagal dan Capgo tidak mengirimkan unggahan tersebut. Itu adalah hasil yang diharapkan. Atau perubahan itu tidak sengaja (perbaiki paket native dan coba lagi sebagai OTA), atau itu sengaja (gunakan jalur native di atas).

Mana bendera yang ditempatkan pada mana pekerjaan?

Judul Bagian “Mana bendera yang ditempatkan pada mana pekerjaan?”
PathKetikaUpload bendera
OTAJS-saja; paket native sesuai dengan saluran--fail-on-incompatible + --auto-min-update-version (diperlukan jika saluran aktif) metadata)
Native baselineNative biner baru + bundel JS yang sesuaiTidak --fail-on-incompatible; jaga --auto-min-update-version

Referensi untuk unggah, kompatibilitas, releaseType, dan flag terkait lainnya.

Judul Bagian: “Teruskan dari Native + OTA Channel Workflow”

Jika Anda menggunakan Native + OTA Channel Workflow untuk menjaga pembaruan hidup aman di sepanjang rilis native, hubungkan dengan Native Compatibility untuk aturan perbandingan paket, Auto OTA atau Native untuk cabang CI, Target Versi context Capgo CLI bundle reference untuk lantai metadata, dan referensi bundel `__CAPGO_KEEP_0__ __CAPGO_KEEP_1__` untuk flag unggah.