Langsung ke konten

Perintah

Halaman ini adalah panduan umum. Gunakan referensi perintah saat ini untuk flag yang tepat: app, bundle, channel, dan build.

Semua perintah harus dijalankan di folder app Anda dengan proyek capacitor yang sudah diinisialisasi dengan benar.

npx @capgo/cli@latest init [apikey]

Metode ini akan memandu onboarding Anda langkah demi langkah.

Ini akan menambahkan aplikasi Anda ke Capgo. code akan ditambahkan ke aplikasi Anda untuk validasi update. Selain itu, ini akan melakukan build pada aplikasi Anda, meng-upload aplikasi ke Capgo, dan membantu Anda mengecek apakah update sudah berjalan.

npx @capgo/cli login [apikey]

Metode ini berfungsi untuk mengingat apikey untuk Anda.

Anda juga bisa memberikan:

--local Ini akan menyimpan apikey di repo lokal dan mengabaikannya di git ignore.

npx @capgo/cli doctor

Perintah untuk mengecek apakah Capgo package Anda sudah versi terbaru.

Perintah ini juga berguna untuk laporan bug.

npx @capgo/cli app add [appId]

[appId] app ID Anda dengan format com.test.app dijelaskan di sini.

💡 Jika tidak ditentukan, semua opsi akan diambil dari config Anda.

Opsional, Anda bisa memasukkan:

  • --icon [/path/to/my/icon] untuk menampilkan ikon kustom di web app Capgo.
  • --name [test] untuk menggunakan nama kustom di dalam daftar.
  • --apikey [key] kunci API untuk menghubungkan ke akun Anda.
  • --retention [retention] masa retensi app bundle dalam hari, default 0 = selamanya.

Contoh capacitor.config.json untuk appId dan AppName, ikon akan dideteksi di folder resources

{
"appId": "ee.forgr.capacitor_go",
"appName": "Capgo",
"webDir": "dist"
}

npx @capgo/cli app set [appId]

[appId] adalah app ID Anda, formatnya dijelaskan di sini.

Opsional, Anda bisa memasukkan:

  • --icon [/path/to/my/icon] agar ikon kustom muncul di web app Capgo.
  • --name [test] agar muncul nama kustom di dalam daftar.
  • --retention [retention] masa retensi app bundle dalam hari, default 0 = tak terbatas.
  • --expose-metadata [true|false] untuk mengekspos metadata bundle (link dan komentar) ke plugin.
  • --preview atau --no-preview untuk mengaktifkan atau menonaktifkan QR code preview bundle dan channel.
  • --allow-device-custom-id atau --no-allow-device-custom-id untuk mengontrol custom device ID.
  • --block-provider-infra-requests atau --no-block-provider-infra-requests untuk mengontrol pemblokiran request datacenter Google dan Apple yang terdeteksi.
  • --build-timeout-minutes [5-360] untuk mengatur timeout Native Build.
  • --ios-store-url [url] atau --android-store-url [url] untuk mengatur URL store.
  • --default-upload-channel [channel] untuk mengatur default upload channel.
  • --default-download-channel [channel] untuk mengatur default download channel, atau --disable-download-channels untuk membuat semua download channel menjadi non-publik.
  • --apikey [key] kunci API untuk menghubungkan ke akun Anda.

npx @capgo/cli app list [appId]

[appId] format app ID Anda com.test.app dijelaskan di sini.

Opsional, Anda bisa memasukkan:

  • --apikey [key] kunci API untuk menghubungkan ke akun Anda.

npx @capgo/cli app delete [appId]

[appId] format app ID Anda com.test.app dijelaskan di sini.

Opsional, Anda bisa memasukkan:

  • --apikey [key] kunci API untuk menghubungkan ke akun Anda.
  • --bundle dengan nomor versi hanya akan menghapus versi ini.

npx @capgo/cli app debug [appId]

[appId] format ID aplikasi Anda com.test.app dijelaskan di sini.

Opsional, Anda bisa memasukkan:

  • --apikey [key] kunci API untuk menghubungkan ke akun Anda.
  • --device dengan perangkat spesifik yang ingin Anda debug

npx @capgo/cli app setting [path]

Edit konfigurasi Capacitor.

[path] - jalur pengaturan yang ingin Anda ubah. Misalnya, untuk mengubah appId, berikan appId. Jika Anda ingin menonaktifkan auto update di capacitor-updater, berikan plugins.CapacitorUpdater.autoUpdate dengan --string off.

Anda WAJIB memberikan salah satu dari --string atau --bool!

Opsi:

  • --string <string> - mengatur setting ke string
  • --bool <true | false> - mengatur setting ke boolean

npx @capgo/cli bundle upload [appId]

[appId] adalah app ID Anda, formatnya dijelaskan di sini.

Opsional, Anda bisa memasukkan:

  • --apikey <apikey> API key untuk menghubungkan ke akun Anda.
  • --path <path> Path folder yang akan di-upload.
  • --channel <channel> Channel yang akan dihubungkan.
  • --external <url> Tautkan ke URL eksternal alih-alih upload ke Capgo Cloud.
  • --iv-session-key <key> Set IV dan session key untuk URL bundle eksternal.
  • --s3-endpoint <s3Endpoint> URL endpoint S3. Tidak berfungsi dengan delta upload atau opsi eksternal.
  • --s3-region <region> Region untuk S3 bucket Anda.
  • --s3-apikey <apikey> API key untuk endpoint S3 Anda.
  • --s3-apisecret <apisecret> API secret untuk endpoint S3 Anda.
  • --s3-bucket-name <bucketName> Nama bucket AWS S3 Anda.
  • --s3-port <port> Port untuk endpoint S3 Anda.
  • --no-s3-ssl Nonaktifkan SSL untuk upload S3.
  • --key <key> Path kustom untuk public signing key (sistem v1).
  • --key-data <keyData> Public signing key (sistem v1).
  • --key-v2 <key> Path kustom untuk private signing key (sistem v2).
  • --key-data-v2 <keyData> Private signing key (sistem v2).
  • --bundle-url Mencetak bundle URL ke stdout.
  • --no-key Abaikan signing key dan kirim update tanpa enkripsi.
  • --no-code-check Abaikan pengecekan apakah notifyAppReady() dipanggil di source code dan index ada di root folder.
  • --display-iv-session Tampilkan di konsol IV dan session key yang dipakai untuk mengenkripsi update.
  • --bundle <bundle> Nomor versi bundle yang akan di-upload.
  • --auto-bump [level] Auto-increment dari bundle yang terhubung ke channel, atau versi app remote terbaru. Level: major, minor (default), patch (alias fix), metadata, atau ai (Workers AI membandingkan file lokal dengan delta manifest Capgo/channel sebelumnya, menentukan level, dan mencatat alasannya; melewati AI dan menaikkan versi patch jika tidak ada versi Capgo sebelumnya). Menaikkan versi sampai nama tersedia (nama yang dihapus tetap terpakai). Tidak bisa digabung dengan --bundle.
  • --min-update-version <minUpdateVersion> Versi minimal yang dibutuhkan untuk update ke versi ini. Hanya digunakan jika disable auto update diatur ke metadata di channel.
  • --auto-min-update-version Atur versi update minimal berdasarkan native packages.
  • --ignore-metadata-check Mengabaikan pengecekan metadata (node_modules) saat upload.
  • --ignore-checksum-check Mengabaikan pengecekan checksum saat upload.
  • --timeout <timeout> Timeout untuk proses upload dalam satuan detik.
  • --delta Mengunggah file Delta (manifest) bersamaan dengan bundle lengkap.
  • --delta-only Hanya mengunggah update Delta (manifest), melewati bundle lengkap.
  • --no-delta Menonaktifkan upload Delta (manifest) (berguna jika mode instant apply autoUpdate aktif tetapi Anda ingin menggunakan bundle lengkap).
  • --tus Upload bundle menggunakan protokol tus.
  • --multipart Menggunakan protokol multipart untuk upload data ke S3, Deprecated, gunakan TUS sebagai gantinya.
  • --encrypted-checksum <encryptedChecksum> Checksum terenkripsi (signature). Hanya digunakan saat mengunggah bundle eksternal.
  • --package-json <packageJson> Path menuju package.json. Berguna untuk monorepo.
  • --auto-set-bundle Atur bundle di capacitor.config.json.
  • --node-modules <nodeModules> Daftar path ke node_modules. Berguna untuk monorepo (pisahkan dengan koma, contoh: ../../node_modules,./node_modules)

⭐️ Opsi External membantu menangani 2 kasus: perusahaan dengan masalah privasi, agar tidak mengirim code ke pihak ketiga, dan aplikasi berukuran > 200 MB. Dengan pengaturan ini, Capgo hanya menyimpan link ke zip dan mengirimkan link tersebut ke semua aplikasi.

👀 Capgo cloud tidak pernah melihat isi di dalam link (untuk opsi eksternal), atau di dalam code saat disimpan.

🔑 Anda bisa menambah lapisan keamanan kedua dengan enkripsi, sehingga Capgo tidak akan bisa melihat atau mengubah apa pun, menjadikannya “trustless”.

Contoh package.json untuk versi

{
"version": "1.0.2"
}

⛔ Versi harus lebih besar dari “0.0.0”.

💡 Jangan lupa perbarui nomor versi setiap kali mengirim, nomor versi tidak bisa ditimpa atau digunakan kembali setelah dihapus demi alasan keamanan.

npx @capgo/cli bundle list [appId]

[appId] app ID Anda dengan format com.test.app dijelaskan di sini.

Opsional, Anda bisa memasukkan:

  • --apikey [key] Kunci API untuk menghubungkan ke akun Anda.

npx @capgo/cli bundle delete [appId]

[appId] format ID aplikasi Anda com.test.app dijelaskan di sini.

Opsional, Anda bisa memasukkan:

  • --apikey [key] Kunci API untuk menghubungkan ke akun Anda.
  • --bundle dengan nomor versi hanya akan menghapus versi ini.

dalam rentang SemVer untuk versi major ke Cloud

npx @capgo/cli bundle cleanup [appId] --bundle=[majorVersion] --keep=[numberToKeep]

[appId] format ID aplikasi Anda com.test.app dijelaskan di sini di sini.

Opsional, Anda bisa memasukkan:

  • --apikey [key] kunci API untuk menghubungkan ke akun Anda.
  • --bundle [majorVersion] versi yang ingin Anda gunakan untuk menghapus paket sebelumnya, ini akan menyimpan paket terakhir + numberToKeep.
  • --keep [numberToKeep] jumlah paket yang ingin Anda simpan (default 4).

Contoh: Jika Anda punya 10 versi dari 10.0.1 sampai 10.0.11, dan Anda menggunakan npx @capgo/cli cleanup [appId] --bundle=10.0.0 ini akan menghapus 10.0.1 sampai 10.0.6. Versi 10.0.7 sampai 10.0.11 akan tetap disimpan.

Jika Anda punya total 20 versi, dan Anda tidak menyertakan nomor bundle seperti ini: npx @capgo/cli cleanup [appId] --keep=2 Ini akan menghapus 18 versi, dan menyimpan 2 versi terakhir.

Perintah ini akan meminta konfirmasi dan menampilkan tabel berisi daftar file yang akan dipertahankan atau dihapus.

Peringatan: Perintah ini sudah deprecated dan akan dihapus pada rilis major berikutnya. Silakan gunakan sistem enkripsi baru. npx @capgo/cli bundle encrypt [path/to/zip]

Perintah ini digunakan saat Anda menggunakan sumber eksternal untuk menyimpan code atau untuk keperluan testing.

Opsional, Anda bisa memasukkan:

--key [/path/to/my/private_key] path dari private key Anda. --key-data [privateKey] data private key, jika Anda ingin menggunakannya secara inline. Perintah ini akan mencetak ivSessionKeyy dan menghasilkan zip terenkripsi, untuk digunakan dengan perintah upload atau decrypt.

npx @capgo/cli bundle encrypt [path/to/zip] [checksum]

Perintah ini digunakan saat Anda menggunakan sumber eksternal untuk menyimpan code atau untuk keperluan testing. Checksum adalah sha256 dari bundle (dihasilkan oleh —key-v2), yang digunakan untuk memverifikasi integritas file setelah dekripsi. File akan dienkripsi dengan private key dan dikirim bersama bundle. Pada enkripsi v2, checksum ditingkatkan menjadi “signature” dari bundle tersebut.

Opsional, Anda bisa memasukkan:

--key [/path/to/my/private_key] path dari private key Anda. --key-data [privateKey] data private key, jika ingin menggunakan inline. --json untuk mengeluarkan info dalam format json. Perintah ini akan mencetak ivSessionKeyy dan membuat zip terenkripsi, untuk digunakan dengan perintah upload atau perintah decrypt.

npx @capgo/cli bundle decrypt [path/to/zip] [ivSessionKey]

Opsional, Anda bisa memasukkan:

--key [/path/to/my/private_key] path dari private key Anda.

--key-data [privateKey] data private key, jika ingin menggunakan inline. Perintah ini utamanya digunakan untuk keperluan testing, akan mendekripsi zip dan menampilkan base64 decrypted session key di konsol.

npx @capgo/cli bundle decryptV2 [path/to/zip] [ivSessionKey]

Opsional, Anda bisa memasukkan:

--key [/path/to/my/private_key] path dari private key Anda. --key-data [privateKey] data private key, jika ingin menggunakan inline. Perintah ini utamanya digunakan untuk keperluan testing, akan mendekripsi zip dan menampilkan base64 decrypted session key di konsol. --checksum [checksum] checksum file tersebut, checksum akan diverifikasi setelah proses dekripsi.

npx @capgo/cli bundle zip [appId]

[appId] adalah app ID Anda, formatnya dijelaskan di sini.

Opsional, Anda bisa memasukkan:

  • --path [/path/to/my/bundle] untuk upload folder tertentu.
  • --bundle [1.0.0] untuk mengatur nomor versi bundle pada nama file.
  • --name [myapp] untuk menimpa nama file.
  • --json untuk menampilkan info dalam format json.
  • --no-code-check untuk mengabaikan pengecekan code dan tetap mengirim bundle.
  • --key-v2 untuk menggunakan sistem enkripsi baru. Ini wajib karena sistem enkripsi baru menggunakan checksum yang lebih baik untuk verifikasi integritas file.

npx @capgo/cli bundle compatibility [appId] -c [channelName]

[appId] adalah app ID Anda, formatnya dijelaskan di di sini. [channelName] nama channel yang ingin dicek.

Opsional, Anda bisa memasukkan:

  • --apikey [key] Kunci API untuk menghubungkan ke akun Anda.
  • --text gunakan teks sebagai pengganti emoji di dalam tabel
  • --channel [channel] channel untuk mengecek kompatibilitasnya.
  • --package-json <packageJson> Path ke package.json. Berguna untuk monorepo
  • --node-modules <nodeModules> Daftar path ke node_modules. Berguna untuk monorepo (pisahkan dengan koma, contoh: ../../node_modules,./node_modules)

npx @capgo/cli channel add [channelName] [appId]

[channelName] nama channel baru Anda, seperti production atau beta. [appId] format app ID Anda com.test.app dijelaskan di sini.

npx @capgo/cli channel delete [channelName] [appId]

[channelName] nama channel yang ingin Anda hapus. [appId] format app ID Anda com.test.app dijelaskan di sini.

npx @capgo/cli channel list [appId]

[appId] format app ID Anda com.test.app dijelaskan di sini.

Opsional, Anda bisa memasukkan:

  • --apikey [key] Kunci API untuk menghubungkan ke akun Anda.

npx @capgo/cli channel set [channelName] [appId]

[appId] adalah ID aplikasi Anda, formatnya dijelaskan di sini. [channelName] nama channel yang ingin Anda konfigurasi, seperti production atau beta.

Opsional, Anda bisa memasukkan:

  • --bundle [1.2.3] bundle aplikasi Anda yang sudah dikirim ke cloud, untuk menghubungkannya ke sebuah channel.
  • --latest dapatkan versi bundle dari package.json:version, tidak bisa digunakan dengan --bundle.
  • --state [ normal | default ] atur status channel, bisa normal atau default. Satu channel harus default.
  • --downgrade mengizinkan channel mengirim versi downgrade ke perangkat.
  • --no-downgrade melarang channel mengirim versi downgrade ke perangkat.
  • --upgrade mengizinkan channel mengirim versi upgrade (major) ke perangkat.
  • --no-upgrade melarang channel mengirim versi upgrade (major) ke perangkat.
  • --ios mengizinkan channel mengirim versi ke perangkat iOS.
  • --no-ios melarang channel mengirim versi ke perangkat iOS.
  • --android mengizinkan channel mengirim versi ke perangkat Android.
  • --no-android melarang channel mengirim versi ke perangkat Android.
  • --self-assign memungkinkan perangkat untuk mendaftarkan diri ke channel ini.
  • --no-self-assign mencegah perangkat untuk mendaftarkan diri ke channel ini.
  • --disable-auto-update STRATEGY Nonaktifkan strategi auto update untuk channel ini. Opsi yang tersedia: major, minor, patch, metadata, none.
  • --apikey [key] Kunci API untuk menghubungkan ke akun Anda.

Ada beberapa cara untuk menangani penonaktifan update bagi versi yang sudah terlalu lama.
Capgo tidak bisa mengupdate native code, jadi update dari versi dengan native code lama ke versi dengan native code yang sudah diperbarui seharusnya tidak memungkinkan. Ada beberapa cara untuk melakukannya.

Pertama, major strategi. Ini mencegah update dari native baseline 0.0.0 -> target bundle 1.0.0. Angka major adalah angka yang disorot (1.0.0 dan 0.0.0).
Kedua adalah minor strategi. Ini mencegah update jika target bundle memiliki versi major atau minor yang berbeda dari baseline native perangkat, seperti 0.0.0 -> 1.1.0 atau 1.1.0 -> 1.2.0.

Ketiga, strategi patch capgo menyertakan strategi ini sebagai mode yang sangat ketat. Tidak disarankan untuk digunakan kecuali Anda benar-benar paham cara kerjanya. Agar update dapat diterima, kondisi berikut harus terpenuhi:

  • Major version sama antara target bundle dan version_build
  • Minor version sama antara target bundle dan version_build
  • Patch version sama antara target bundle dan version_build
  • Hanya suffix versi yang boleh berbeda, seperti prerelease ("-beta.2") atau build metadata ("+build.2)

Berikut adalah contoh skenario kapan update diizinkan atau ditolak

  • 1.0.0-beta.1 -> 1.0.0-beta.2 diizinkan
  • 1.0.0+build.1 -> 1.0.0+build.2 diizinkan
  • 1.0.0 -> 1.0.1 diblokir
  • 1.0.0 -> 1.1.0 diblokir
  • 1.0.0 -> 2.0.0 diblokir

Perbandingan strategi menggunakan baseline native yang dikirim sebagai version_build, bukan bundle yang saat ini di-download sebagai version_name.

Terakhir adalah strategi yang paling rumit. Strategi metadata tersebut.
Pertama, Anda perlu tahu bahwa setelah diaktifkan, pembaruan tersebut AKAN gagal karena channel kekurangan metadata yang diperlukan.
Jika channel kekurangan metadata, Anda akan melihat pesan seperti ini:

Metadata tidak ditemukan

Jika muncul pesan seperti ini, Anda harus membuka bundle pada channel yang bermasalah dan mengatur metadatanya.
Pertama, cari tahu channel mana yang bermasalah. Anda bisa melihatnya pada kolom misconfigured kolom

Tabel salah konfigurasi

Kemudian buka channel yang bermasalah dan klik Bundle number. Ini akan mengarahkan Anda ke halaman bundle.

Cari channel yang bermasalah

Setelah di sana, isi field Minimal update version . Ini harus berupa semver.
Jika nilai yang Anda masukkan bukan semver, Anda akan menerima error, tetapi jika berhasil, tampilannya akan seperti ini:

Atur versi minimum

Anda mungkin tidak ingin mengatur data ini secara manual setiap kali update. Untungnya, CLI akan mencegah Anda mengirim update tanpa metadata ini

CLI gagal tanpa metadata

Untuk mengupload bundle dengan benar saat menggunakan metadata opsi, Anda perlu menyertakan --min-update-version dengan semver yang valid. Something like this:

CLI upload dengan metadata

Panduan --min-update-version bukan SATU-SATUNYA cara untuk menangani kompatibilitas. Ada juga opsi --auto-min-update-version. Begini cara kerjanya.

Pertama, sistem akan mengecek versi yang saat ini diunggah ke channel. Ia memeriksa kompatibilitas sama seperti bundle compatibility perintah tersebut. Kedua, jika versi baru 100% kompatibel, ia akan menggunakan kembali min_update_version dari versi terbaru di channel tersebut. Jika tidak, ia akan mengatur min_update_version ke nomor bundle dari versi yang baru diunggah.

Anda akan selalu mendapatkan informasi mengenai min_update_version saat menggunakan opsi ini. Tampilannya akan seperti ini:

Versi minimum update

Jika versi baru tidak kompatibel, tampilannya akan seperti ini

Versi minimum update tidak kompatibel

Capgo mendukung end-to-end encryption, artinya bundle (code) Anda dienkripsi sebelum dikirim ke cloud dan didekripsi di perangkat. Untuk itu, Anda perlu membuat RSA key pair; gunakan perintah berikut untuk membuatnya.

Sistem enkripsi ini merupakan kombinasi RSA dan AES; kunci RSA digunakan untuk mengenkripsi kunci AES, dan kunci AES digunakan untuk mengenkripsi file.

Lihat di bawah untuk informasi lebih lanjut mengenai sistem enkripsi.

Cara kerja crypto

Skema enkripsi

npx @capgo/cli key create

Opsional, Anda bisa memasukkan: --force untuk menimpa key yang sudah ada. Perintah ini akan membuatkan key pair di aplikasi Anda, dan meminta Anda menyimpan private key di tempat yang aman. Disarankan untuk tidak melakukan git commit pada private key dan tidak membagikannya kepada siapa pun.

Setelah pengujian lokal selesai, hapus kunci tersebut dari file konfigurasi dan tambahkan pada langkah CI dengan key save

npx @capgo/cli key save

Opsional, Anda bisa memasukkan:

--key [/path/to/my/public_key] path file public key Anda.

--key-data [publicKey] data public key, jika ingin menggunakan inline. Perintah ini berguna jika Anda mengikuti rekomendasi untuk tidak melakukan commit key di app config.

Untuk mengotomatiskan pekerjaan Anda, saya sarankan buat GitHub action yang melakukan push ke server kami

Tutorial GitHub action

GitHub - Cap-go/demo-app

Jangan lupa konfigurasi env variable CI dengan key API Anda

Jika Anda menggunakan Perintah untuk merencanakan operasi dashboard dan API, hubungkan dengan Ringkasan API untuk detail implementasi di API Overview, Pendahuluan untuk detail implementasi di Introduction, Kunci API untuk detail implementasi di API Keys, Perangkat untuk detail implementasi di Devices, dan Bundle untuk detail implementasi di Bundles.