Perintah
Penggunaan
Semua perintah harus dijalankan di folder aplikasi Anda dengan proyek Capacitor yang sudah disiapkan dengan benar
Init
npx @capgo/cli@latest init [apikey]
Metode ini ada untuk membimbing Anda langkah demi langkah
Ini akan menambahkan aplikasi Anda ke Capgo Ini akan menambahkan kode ke aplikasi Anda untuk memvalidasi pembaruan Demikian juga, ini akan membangun aplikasi Anda Selanjutnya, ini akan mengunggah aplikasi Anda ke Capgo Dan ini akan membantu Anda untuk memeriksa apakah pembaruan berfungsi
Login
npx @capgo/cli login [apikey]
Metode ini ada untuk mengingat apikey
untuk Anda
Secara opsional Anda dapat memberikan:
--local
Ini akan menyimpan apikey Anda di repo lokal dan git akan mengabaikannya
Doctor
npx @capgo/cli doctor
Perintah untuk memeriksa apakah Anda sudah up-to-date dengan paket Capgo
Perintah ini juga akan berguna untuk laporan bug
Aplikasi
Add
npx @capgo/cli app add [appId]
[appId]
ID aplikasi Anda dengan format comtestapp
dijelaskan di sini
💡 Semua opsi akan ditebak dalam konfigurasi Anda jika tidak disediakan
Secara opsional, Anda dapat memberikan:
--icon [/path/to/my/icon]
untuk memiliki ikon khusus yang ditampilkan di aplikasi web Capgo--name [test]
untuk memiliki nama khusus dalam daftar--apikey [key]
API key untuk menghubungkan ke akun Anda--retention [retention]
periode retensi bundle aplikasi dalam hari, 0 secara default = tak terbatas
Contoh capacitorconfigjson
untuk appId dan AppName, ikon ditebak di folder resources
{ "appId": "eeforgrcapacitor_go", "appName": "Capgo", "webDir": "dist"}
Set
npx @capgo/cli app set [appId]
[appId]
adalah ID aplikasi Anda, formatnya dijelaskan di sini
Secara opsional, Anda dapat memberikan:
--icon [/path/to/my/icon]
untuk memiliki ikon khusus yang ditampilkan di aplikasi web Capgo--name [test]
untuk memiliki nama khusus dalam daftar--retention [retention]
periode retensi bundle aplikasi dalam hari, 0 secara default = tak terbatas--apikey [key]
API key untuk menghubungkan ke akun Anda
List
npx @capgo/cli app list [appId]
[appId]
ID aplikasi Anda dengan format comtestapp
dijelaskan di sini
Secara opsional, Anda dapat memberikan:
--apikey [key]
API key untuk menghubungkan ke akun Anda
Delete
npx @capgo/cli app delete [appId]
[appId]
ID aplikasi Anda dengan format comtestapp
dijelaskan di sini
Secara opsional, Anda dapat memberikan:
--apikey [key]
API key untuk menghubungkan ke akun Anda--bundle
dengan nomor versi hanya akan menghapus versi ini
Debug
npx @capgo/cli app debug [appId]
[appId]
ID aplikasi Anda dengan format comtestapp
dijelaskan di sini
Secara opsional, Anda dapat memberikan:
--apikey [key]
API key untuk menghubungkan ke akun Anda--device
dengan perangkat spesifik yang ingin Anda debug
Setting
npx @capgo/cli app setting [path]
Edit konfigurasi Capacitor
[path]
- path dari pengaturan yang ingin Anda ubah. Misalnya, untuk mengubah appId
, berikan appId
Jika Anda ingin menonaktifkan pembaruan otomatis di capacitor-updater
berikan pluginsCapacitorUpdaterautoUpdate
Anda HARUS memberikan --string
atau --bool
!
Opsi:
--string <string>
- mengatur pengaturan ke string--bool <true | false>
- mengatur pengaturan ke boolean
Bundle
Upload
npx @capgo/cli bundle upload [appId]
[appId]
adalah ID aplikasi Anda, formatnya dijelaskan di sini
Secara opsional, Anda dapat memberikan:
--apikey <apikey>
API key untuk menghubungkan ke akun Anda--path <path>
Path folder yang akan diunggah--channel <channel>
Channel yang akan dihubungkan--external <url>
Link ke URL eksternal alih-alih mengunggah ke Capgo Cloud--iv-session-key <key>
Atur IV dan kunci sesi untuk URL bundle eksternal--s3-endpoint <s3Endpoint>
URL endpoint S3 Tidak bekerja dengan unggahan Parsial, atau opsi eksternal--s3-region <region>
Region untuk bucket S3 Anda--s3-apikey <apikey>
API key untuk endpoint S3 Anda--s3-apisecret <apisecret>
API secret untuk endpoint S3 Anda--s3-bucket-name <bucketName>
Nama untuk bucket AWS S3 Anda--s3-port <port>
Port untuk endpoint S3 Anda--no-s3-ssl
Nonaktifkan SSL untuk unggahan S3--key <key>
Path kustom untuk kunci penandatanganan publik (sistem v1)--key-data <keyData>
Kunci penandatanganan publik (sistem v1)--key-v2 <key>
Path kustom untuk kunci penandatanganan privat (sistem v2)--key-data-v2 <keyData>
Kunci penandatanganan privat (sistem v2)--bundle-url
Mencetak URL bundle ke stdout--no-key
Abaikan kunci penandatanganan dan kirim pembaruan yang jelas--no-code-check
Abaikan pemeriksaan apakah notifyAppReady() dipanggil dalam kode sumber dan indeks ada di folder root--display-iv-session
Tampilkan di konsol IV dan kunci sesi yang digunakan untuk mengenkripsi pembaruan--bundle <bundle>
Nomor versi bundle yang akan diunggah--min-update-version <minUpdateVersion>
Versi minimal yang diperlukan untuk memperbarui ke versi ini Hanya digunakan jika nonaktifkan pembaruan otomatis diatur ke metadata di channel--auto-min-update-version
Atur versi pembaruan minimal berdasarkan paket native--ignore-metadata-check
Mengabaikan pemeriksaan metadata (node_modules) saat mengunggah--ignore-checksum-check
Mengabaikan pemeriksaan checksum saat mengunggah--timeout <timeout>
Batas waktu untuk proses unggah dalam detik--partial
Tidak mengunggah file parsial ke cloud Capgo--tus
Unggah bundle menggunakan protokol tus--multipart
Menggunakan protokol multipart untuk mengunggah data ke S3, Tidak direkomendasikan, gunakan TUS sebagai gantinya--encrypted-checksum <encryptedChecksum>
Checksum terenkripsi (tanda tangan) Hanya digunakan saat mengunggah bundle eksternal--package-json <packageJson>
Path ke packagejson Berguna untuk monorepos--auto-set-bundle
Atur bundle di capacitorconfigjson--node-modules <nodeModules>
Daftar path ke node_modules Berguna untuk monorepos (dipisahkan koma mis: //node_modules,/node_modules)
⭐️ Opsi eksternal membantu membuka 2 kasus: korporat dengan masalah privasi, jangan kirim kode ke pihak ketiga dan aplikasi lebih besar dari 200 MB Dengan pengaturan ini, Capgo hanya menyimpan tautan ke zip dan mengirim tautan ke semua aplikasi
👀 Cloud Capgo tidak pernah melihat apa yang ada di link (untuk opsi eksternal), atau di kode ketika disimpan
🔑 Anda dapat menambahkan lapisan keamanan kedua dengan menggunakan enkripsi, maka Capgo tidak akan dapat melihat atau memodifikasi apa pun, menjadi “trustless”
Contoh packagejson
untuk versi
{ "version": "102"}
⛔ Versi harus lebih besar dari “000”
💡 Jangan lupa untuk memperbarui nomor versi setiap kali Anda mengirim, nomor versi tidak dapat ditimpa, atau digunakan kembali setelah penghapusan karena alasan keamanan
List
npx @capgo/cli bundle list [appId]
[appId]
ID aplikasi Anda dengan format comtestapp
dijelaskan di sini
Secara opsional, Anda dapat memberikan:
--apikey [key]
API key untuk menghubungkan ke akun Anda
Delete
npx @capgo/cli bundle delete [appId]
[appId]
ID aplikasi Anda dengan format comtestapp
dijelaskan di sini
Secara opsional, Anda dapat memberikan:
--apikey [key]
API key untuk menghubungkan ke akun Anda--bundle
dengan nomor versi hanya akan menghapus versi ini
Cleanup
dalam rentang SemVer untuk versi major ke Cloud
npx @capgo/cli bundle cleanup [appId] --bundle=[majorVersion] --keep=[numberToKeep]
[appId]
ID aplikasi Anda dengan format comtestapp
dijelaskan di sini
Secara opsional, Anda dapat memberikan:
--apikey [key]
API key untuk menghubungkan ke akun Anda--bundle [majorVersion]
versi yang ingin Anda hapus paket sebelumnya, ini akan menyimpan yang terakhir +numberToKeep
*--keep [numberToKeep]
jumlah paket yang ingin Anda simpan (default 4)
Contoh: Jika Anda memiliki 10 versi dari 1001 hingga 10011, dan Anda menggunakan npx @capgo/cli cleanup [appId] --bundle=1000
maka akan menghapus 1001 hingga 1006, 1007 sampai 10011 akan disimpan
Jika Anda memiliki 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 yang terakhir
Perintah ini akan meminta konfirmasi, menampilkan tabel apa yang akan disimpan dan dihapus
Encrypt
Peringatan: Perintah ini sudah usang dan akan dihapus di rilis mayor berikutnya. Silakan gunakan sistem enkripsi yang baru
npx @capgo/cli bundle encrypt [path/to/zip]
Perintah ini digunakan ketika Anda menggunakan sumber eksternal untuk menyimpan kode Anda atau untuk tujuan pengujian
Secara opsional, Anda dapat memberikan:
--key [/path/to/my/private_key]
path dari private key Anda
--key-data [privateKey]
data private key, jika Anda ingin menggunakan secara inline
Perintah akan mencetak ivSessionKey
Anda dan menghasilkan zip terenkripsi, untuk digunakan dengan perintah upload atau decrypt
Encrypt V2
npx @capgo/cli bundle encryptV2 [path/to/zip] [checksum]
Perintah ini digunakan ketika Anda menggunakan sumber eksternal untuk menyimpan kode Anda atau untuk tujuan pengujian Checksum adalah sha256 dari bundle (dihasilkan oleh —key-v2), digunakan untuk memverifikasi integritas file setelah dekripsi Ini akan dienkripsi dengan private key dan dikirim bersama dengan bundle Dalam enkripsi v2 checksum ditingkatkan menjadi “signature” dari bundle
Secara opsional, Anda dapat memberikan:
--key [/path/to/my/private_key]
path dari private key Anda
--key-data [privateKey]
data private key, jika Anda ingin menggunakan secara inline
--json
untuk menampilkan info sebagai json
Perintah akan mencetak ivSessionKey
Anda dan menghasilkan zip terenkripsi, untuk digunakan dengan perintah upload atau decrypt
Decrypt
npx @capgo/cli bundle decrypt [path/to/zip] [ivSessionKey]
Secara opsional, Anda dapat memberikan:
--key [/path/to/my/private_key]
path dari private key Anda
--key-data [privateKey]
data private key, jika Anda ingin menggunakan secara inline Perintah ini terutama digunakan untuk tujuan pengujian, akan mendekripsi zip dan mencetak session key terdekripsi base64 di konsol
Decrypt V2
npx @capgo/cli bundle decryptV2 [path/to/zip] [ivSessionKey]
Secara opsional, Anda dapat memberikan:
--key [/path/to/my/private_key]
path dari private key Anda
--key-data [privateKey]
data private key, jika Anda ingin menggunakan secara inline Perintah ini terutama digunakan untuk tujuan pengujian, akan mendekripsi zip dan mencetak session key terdekripsi base64 di konsol
--checksum [checksum]
checksum dari file, akan memverifikasi checksum setelah dekripsi
Zip
npx @capgo/cli bundle zip [appId]
[appId]
adalah ID aplikasi Anda, formatnya dijelaskan di sini
Secara opsional, Anda dapat memberikan:
--path [/path/to/my/bundle]
untuk mengunggah folder tertentu--bundle [100]
untuk mengatur nomor versi bundle dari nama file--name [myapp]
untuk mengganti nama file--json
untuk menampilkan info sebagai json--no-code-check
untuk mengabaikan pemeriksaan kode dan mengirim bundle--key-v2
untuk menggunakan sistem enkripsi baru Ini diperlukan karena sistem enkripsi baru menggunakan checksum yang lebih baik untuk memverifikasi integritas file
Compatibility
npx @capgo/cli bundle compatibility [appId] -c [channelId]
[appId]
adalah ID aplikasi Anda, formatnya dijelaskan di sini
[channelId]
nama channel baru Anda
Secara opsional, Anda dapat memberikan:
--apikey [key]
API key untuk menghubungkan ke akun Anda--text
gunakan teks alih-alih emoji dalam tabel--channel [channel]
channel untuk memeriksa kompatibilitas--package-json <packageJson>
Path ke packagejson Berguna untuk monorepos--node-modules <nodeModules>
Daftar path ke node_modules Berguna untuk monorepos (dipisahkan koma mis: //node_modules,/node_modules)
Channel
Add
npx @capgo/cli channel add [channelId] [appId]
[channelId]
nama channel baru Anda [appId]
ID aplikasi Anda dengan format comtestapp
dijelaskan di sini
Delete
npx @capgo/cli channel delete [channelId] [appId]
[channelId]
nama channel yang ingin Anda hapus [appId]
ID aplikasi Anda dengan format comtestapp
dijelaskan di sini
List
npx @capgo/cli channel list [appId]
[appId]
ID aplikasi Anda dengan format comtestapp
dijelaskan di sini
Secara opsional, Anda dapat memberikan:
--apikey [key]
API key untuk menghubungkan ke akun Anda
Set
npx @capgo/cli channel set [channelId] [appId]
[appId]
adalah ID aplikasi Anda, formatnya dijelaskan di sini
Secara opsional, Anda dapat memberikan:
--bundle [123]
bundle aplikasi Anda yang sudah dikirim ke cloud, untuk menghubungkannya ke channel--latest
mengambil versi bundle daripackagejson:version
, tidak dapat digunakan dengan--bundle
--state [ normal | default ]
mengatur status channel, bisanormal
ataudefault
Satu channel harusdefault
--downgrade
mengizinkan channel untuk mengirim versi downgrade ke perangkat--no-downgrade
melarang channel untuk mengirim versi downgrade ke perangkat--upgrade
mengizinkan channel untuk mengirim upgrade (major) versi ke perangkat--no-upgrade
melarang channel untuk mengirim upgrade (major) versi ke perangkat--ios
mengizinkan channel untuk mengirim versi ke perangkat iOS--no-ios
melarang channel untuk mengirim versi ke perangkat iOS--android
mengizinkan channel untuk mengirim versi ke perangkat android--no-android
melarang channel untuk mengirim versi ke perangkat android--self-assign
mengizinkan perangkat untuk menetapkan diri ke channel ini--no-self-assign
melarang perangkat untuk menetapkan diri ke channel ini--disable-auto-update STRATEGY
Menonaktifkan strategi pembaruan otomatis untuk channel ini Opsi yang mungkin adalah: major, minor, metadata, none--apikey [key]
API key untuk menghubungkan ke akun Anda
Strategi menonaktifkan pembaruan
Ada beberapa cara untuk menangani penonaktifan pembaruan untuk versi yang terlalu lama
Capgo tidak dapat memperbarui kode native sehingga pembaruan dari versi dengan kode native lama ke versi dengan kode native yang diperbarui seharusnya tidak mungkin
Ada beberapa cara untuk mencapai itu
Pertama, strategi major
Ini mencegah pembaruan dari 000
-> 100
Major adalah angka yang disorot (100 dan 000)
Kedua adalah strategi minor
Ini mencegah pembaruan dari 000
-> 110
atau pembaruan dari 110
ke 120
PERHATIAN strategi ini tidak mencegah pembaruan dari 010
-> 110
Ketiga, strategi patch
Ini ditambahkan ke capgo sebagai mode yang sangat ketat Tidak direkomendasikan untuk digunakan kecuali Anda benar-benar memahami cara kerjanya
Agar dapat menerima pembaruan kondisi berikut harus dipenuhi:
- Major sama antara versi baru dan lama
- Minor sama antara versi baru dan lama
- Patch dari versi baru lebih besar dari patch versi lama
Berikut contoh skenario di mana pembaruan diizinkan atau ditolak
- 00311 -> 00314 ✅
- 000 -> 00314 ✅
- 00316 -> 00314 ❌
- 01312 -> 00314 ❌
- 10312 -> 00314 ❌
Terakhir strategi yang paling rumit Strategi metadata
Pertama Anda perlu tahu bahwa awalnya setelah Anda mengaktifkannya pembaruan AKAN gagal karena channel tidak memiliki metadata yang diperlukan
Jika channel tidak memiliki metadata Anda akan melihat pesan seperti ini:

Jika Anda melihat sesuatu seperti ini, Anda tahu bahwa Anda harus pergi ke bundle saat ini untuk channel yang gagal dan mengatur metadata
Pertama, cari tahu channel mana yang gagal Anda dapat melakukannya dengan melihat kolom misconfigured

Kemudian pergi ke channel yang gagal dan klik pada Bundle number
. Ini akan membawa Anda ke halaman bundle

Setelah itu isi field Minimal update version
. Ini harus berupa semver
Jika nilai yang Anda masukkan bukan semver, Anda akan mendapat error, tetapi jika semua berjalan dengan benar Anda akan melihat sesuatu seperti ini:

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

Untuk mengunggah bundle dengan benar saat menggunakan opsi metadata
, Anda perlu memberikan --min-update-version
dengan semver yang valid. Seperti ini:

--min-update-version
bukan satu-satunya cara untuk melakukan kompatibilitas.
Ada juga --auto-min-update-version
. Berikut cara kerjanya:
Pertama, melihat versi yang saat ini diunggah ke channel. Memeriksa kompatibilitas sama seperti perintah bundle compatibility
.
Kedua, jika versi baru 100% kompatibel, akan menggunakan kembali min_update_version
dari versi terbaru di channel.
Jika tidak, maka akan mengatur min_update_version
ke nomor bundle versi yang baru diunggah.
Anda akan selalu mendapatkan informasi tentang min_update_version
saat menggunakan opsi ini. Tampilannya akan seperti ini:

Jika versi baru tidak kompatibel, tampilannya akan seperti ini:

Enkripsi End-to-End (Trustless)
Capgo mendukung enkripsi end-to-end, ini berarti bundle (kode) Anda dienkripsi sebelum dikirim ke cloud dan didekripsi di perangkat. Untuk itu, Anda perlu menghasilkan pasangan kunci RSA, Anda dapat menggunakan perintah berikut untuk menghasilkannya.
Sistem enkripsi adalah 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 tentang sistem enkripsi.

Skema enkripsi
Membuat kunci untuk aplikasi Anda
npx @capgo/cli key create
Secara opsional, Anda dapat memberikan: --force
untuk menimpa kunci yang ada. Perintah ini akan membuat pasangan kunci di aplikasi Anda, dan akan meminta Anda untuk menyimpan kunci privat di tempat yang aman. Disarankan untuk tidak melakukan git commit kunci privat, dan tidak membagikannya dengan siapa pun.
Setelah pengujian lokal Anda, hapus kunci dari file konfigurasi dan tambahkan pada langkah CI dengan
key save
Menyimpan kunci dalam konfigurasi aplikasi Anda
npx @capgo/cli key save
Secara opsional, Anda dapat memberikan:
--key [/path/to/my/private_key]
path kunci privat Anda
--key-data [privateKey]
data kunci privat, jika Anda ingin menggunakan inline. Perintah ini berguna jika Anda mengikuti rekomendasi dan tidak melakukan commit kunci di aplikasi Anda, dan dalam konfigurasi.
Integrasi CI
Untuk mengotomatiskan pekerjaan Anda, saya sarankan Anda membuat GitHub action melakukan pekerjaan mengirim ke server kami.
Aplikasi demo kami
Jangan lupa untuk mengkonfigurasi variabel env CI dengan API key Anda