Comandi
使用方法
すべてのコマンドは、Capacitorプロジェクトが適切に初期化されたアプリフォルダで実行する必要があります
初期化
npx @capgo/cli@latest init [apikey]
このメソッドは、ステップバイステップで導入をサポートします
アプリをCapgoに追加し、アップデートを検証するコードをアプリに追加します。同様に、アプリをビルドし、Capgoにアップロードし、アップデートが機能するかを確認するのに役立ちます
ログイン
npx @capgo/cli login [apikey]
このメソッドは、apikeyを記憶するためのものです
オプションで指定可能:
--local apikeyをローカルリポジトリに保存し、gitで無視します
ドクター
npx @capgo/cli doctor
Capgoパッケージが最新かどうかを確認するコマンド
このコマンドはバグレポートにも役立ちます
アプリ
追加
npx @capgo/cli app add [appId]
[appId] アプリIDのフォーマットcomtestappはこちらで説明されています
💡 提供されていない場合、すべてのオプションは設定から推測されます
オプションで指定可能:
--icon [/path/to/my/icon]Capgoウェブアプリに表示するカスタムアイコン--name [test]リストでのカスタム名--apikey [key]アカウントにリンクするAPIキー--retention [retention]アプリバンドルの保持期間(日数)、デフォルトは0 = 無期限
appIdとAppNameのcapacitorconfigjsonの例、アイコンはresourcesフォルダから推測されます
{ "appId": "eeforgrcapacitor_go", "appName": "Capgo", "webDir": "dist"}設定
npx @capgo/cli app set [appId]
[appId] はアプリID、フォーマットはこちらで説明されています
オプションで指定可能:
--icon [/path/to/my/icon]Capgoウェブアプリに表示するカスタムアイコン--name [test]リストでのカスタム名--retention [retention]アプリバンドルの保持期間(日数)、デフォルトは0 = 無期限--apikey [key]アカウントにリンクするAPIキー
一覧
npx @capgo/cli app list [appId]
[appId] アプリIDのフォーマットcomtestappはこちらで説明されています
オプションで指定可能:
--apikey [key]アカウントにリンクするAPIキー
削除
npx @capgo/cli app delete [appId]
[appId] アプリIDのフォーマットcomtestappはこちらで説明されています
オプションで指定可能:
--apikey [key]アカウントにリンクするAPIキー--bundleバージョン番号を指定してそのバージョンのみを削除
デバッグ
npx @capgo/cli app debug [appId]
[appId] アプリIDのフォーマットcomtestappはこちらで説明されています
オプションで指定可能:
--apikey [key]アカウントにリンクするAPIキー--deviceデバッグしたい特定のデバイス
設定
npx @capgo/cli app setting [path]
Capacitor設定を編集
[path] - 変更したい設定のパス。例えば、appIdを変更するにはappIdを指定します
capacitor-updaterの自動更新を無効にするにはpluginsCapacitorUpdaterautoUpdateを指定します
--stringまたは--boolのいずれかを指定する必要があります!
オプション:
--string <string>- 設定を文字列に設定--bool <true | false>- 設定をブーリアンに設定
バンドル
アップロード
npx @capgo/cli bundle upload [appId]
[appId] はアプリID、フォーマットはこちらで説明されています
オプションで指定可能:
--apikey <apikey>アカウントにリンクするAPIキー--path <path>アップロードするフォルダのパス--channel <channel>リンクするチャンネル--external <url>Capgoクラウドにアップロードする代わりに外部URLにリンク--iv-session-key <key>バンドルURL外部用のIVとセッションキーを設定--s3-endpoint <s3Endpoint>S3エンドポイントのURL 部分アップロードまたは外部オプションでは動作しません--s3-region <region>S3バケットのリージョン--s3-apikey <apikey>S3エンドポイントのAPIキー--s3-apisecret <apisecret>S3エンドポイントのAPIシークレット--s3-bucket-name <bucketName>AWS S3バケットの名前--s3-port <port>S3エンドポイントのポート--no-s3-sslS3アップロード用のSSLを無効化--key <key>公開署名キーのカスタムパス(v1システム)--key-data <keyData>公開署名キー(v1システム)--key-v2 <key>秘密署名キーのカスタムパス(v2システム)--key-data-v2 <keyData>秘密署名キー(v2システム)--bundle-urlバンドルURLをstdoutに出力--no-key署名キーを無視してクリアアップデートを送信--no-code-checkソースコードでnotifyAppReady()が呼び出されているかとルートフォルダにindexが存在するかのチェックを無視--display-iv-sessionアップデートの暗号化に使用されたIVとセッションキーをコンソールに表示--bundle <bundle>アップロードするバンドルのバージョン番号--min-update-version <minUpdateVersion>このバージョンに更新するために必要な最小バージョン チャンネルで自動更新が無効になっている場合のみ使用--auto-min-update-versionネイティブパッケージに基づいて最小更新バージョンを設定--ignore-metadata-checkアップロード時のメタデータ(node_modules)チェックを無視--ignore-checksum-checkアップロード時のチェックサムチェックを無視--timeout <timeout>アップロードプロセスのタイムアウト(秒)--partial部分ファイルをCapgoクラウドにアップロードしない--tustusプロトコルを使用してバンドルをアップロード--multipartS3にデータをアップロードするためにマルチパートプロトコルを使用、非推奨、代わりにTUSを使用--encrypted-checksum <encryptedChecksum>暗号化されたチェックサム(署名) 外部バンドルをアップロードする場合のみ使用--package-json <packageJson>packagejsonへのパス モノレポで有用--auto-set-bundlecapacitorconfigjsonでバンドルを設定--node_modules <nodeModules>node_modulesへのパスのリスト モノレポで有用(カンマ区切り 例://node_modules,/node_modules)
⭐️ 外部オプションは2つのケースを解決するのに役立ちます:プライバシーに関する企業の懸念、サードパーティにコードを送信しない、200 MB以上のアプリ。この設定では、Capgoはzipへのリンクのみを保存し、すべてのアプリにリンクを送信します
👀 Capgoクラウドは、リンク内(外部オプションの場合)や保存されたコードの内容を一切確認しません
🔑 暗号化を追加することで2層目のセキュリティを追加できます。そうすることでCapgoは何も確認や変更ができなくなり、「トラストレス」になります
バージョンのpackagejsonの例
{ "version": "102"}⛔ バージョンは”000”より大きい必要があります
💡 セキュリティ上の理由から、バージョン番号は削除後に上書きまたは再利用することはできないため、送信するたびにバージョン番号を更新することを忘れないでください
一覧
npx @capgo/cli bundle list [appId]
[appId] アプリIDのフォーマットcomtestappはこちらで説明されています
オプションで指定可能:
--apikey [key]アカウントにリンクするAPIキー
削除
npx @capgo/cli bundle delete [appId]
[appId] アプリIDのフォーマットcomtestappはこちらで説明されています
オプションで指定可能:
--apikey [key]アカウントにリンクするAPIキー--bundleバージョン番号を指定してそのバージョンのみを削除
クリーンアップ
クラウドのメジャーバージョンのSemVer範囲内で
npx @capgo/cli bundle cleanup [appId] --bundle=[majorVersion] --keep=[numberToKeep]
[appId] アプリIDのフォーマットcomtestappはこちらで説明されています
オプションで指定可能:
--apikey [key]アカウントにリンクするAPIキー--bundle [majorVersion]以前のパッケージを削除したいバージョン、最後のものとnumberToKeepを保持します*--keep [numberToKeep]保持したいパッケージの数(デフォルトは4)
例: バージョン1001から10011まで10個のバージョンがあり、npx @capgo/cli cleanup [appId] --bundle=1000を使用した場合、1001から1006までが削除され、1007から10011が保持されます
合計20バージョンがあり、バンドル番号を指定せずにnpx @capgo/cli cleanup [appId] --keep=2のように実行した場合、18バージョンが削除され、最後の2つが保持されます
このコマンドは確認を求め、保持および削除される内容の一覧を表示します
暗号化
警告: このコマンドは非推奨であり、次のメジャーリリースで削除されます。新しい暗号化システムを使用してください
npx @capgo/cli bundle encrypt [path/to/zip]
このコマンドは、コードを外部ソースに保存する場合やテスト目的で使用します
オプションで以下を指定できます:
--key [/path/to/my/private_key] プライベートキーのパス
--key-data [privateKey] インラインで使用する場合のプライベートキーデータ
コマンドはivSessionKeyを表示し、アップロードコマンドまたは復号化コマンドで使用する暗号化されたzipを生成します
暗号化 V2
npx @capgo/cli bundle encryptV2 [path/to/zip] [checksum]
このコマンドは、コードを外部ソースに保存する場合やテスト目的で使用します チェックサムはバンドルのsha256(—key-v2で生成)で、復号化後のファイルの整合性を確認するために使用されます プライベートキーで暗号化され、バンドルと共に送信されます 暗号化v2では、チェックサムがバンドルの「署名」にアップグレードされます
オプションで以下を指定できます:
--key [/path/to/my/private_key] プライベートキーのパス
--key-data [privateKey] インラインで使用する場合のプライベートキーデータ
--json 情報をJSONとして出力
コマンドはivSessionKeyを表示し、アップロードコマンドまたは復号化コマンドで使用する暗号化されたzipを生成します
復号化
npx @capgo/cli bundle decrypt [path/to/zip] [ivSessionKey]
オプションで以下を指定できます:
--key [/path/to/my/private_key] プライベートキーのパス
--key-data [privateKey] インラインで使用する場合のプライベートキーデータ このコマンドは主にテスト目的で使用され、zipを復号化してbase64でエンコードされた復号化されたセッションキーをコンソールに表示します
復号化 V2
npx @capgo/cli bundle decryptV2 [path/to/zip] [ivSessionKey]
オプションで以下を指定できます:
--key [/path/to/my/private_key] プライベートキーのパス
--key-data [privateKey] インラインで使用する場合のプライベートキーデータ このコマンドは主にテスト目的で使用され、zipを復号化してbase64でエンコードされた復号化されたセッションキーをコンソールに表示します
--checksum [checksum] ファイルのチェックサム、復号化後にチェックサムを検証します
Zip
npx @capgo/cli bundle zip [appId]
[appId] はアプリIDです。フォーマットについてはこちらで説明されています
オプションで以下を指定できます:
--path [/path/to/my/bundle]特定のフォルダをアップロードする場合--bundle [100]ファイル名のバンドルバージョン番号を設定--name [myapp]ファイル名をオーバーライド--json情報をJSONとして出力--no-code-checkコードチェックを無視してバンドルを送信--key-v2新しい暗号化システムを使用 これは、新しい暗号化システムがファイルの整合性を確認するためのより良いチェックサムを使用するために必要です
互換性
npx @capgo/cli bundle compatibility [appId] -c [channelId]
[appId] はアプリIDです。フォーマットについてはこちらで説明されています
[channelId] は新しいチャンネルの名前です
オプションで以下を指定できます:
--apikey [key]アカウントにリンクするAPIキー--textテーブルで絵文字の代わりにテキストを使用--channel [channel]互換性をチェックするチャンネル--package-json <packageJson>packagejsonへのパス モノレポで有用です--node-modules <nodeModules>node_modulesへのパスのリスト モノレポで有用です(カンマ区切り 例: //node_modules,/node_modules)
チャンネル
追加
npx @capgo/cli channel add [channelId] [appId]
[channelId] 新しいチャンネルの名前 [appId] アプリID フォーマットcomtestappについてはこちらで説明されています
削除
npx @capgo/cli channel delete [channelId] [appId]
[channelId] 削除したいチャンネルの名前 [appId] アプリID フォーマットcomtestappについてはこちらで説明されています
一覧
npx @capgo/cli channel list [appId]
[appId] アプリID フォーマットcomtestappについてはこちらで説明されています
オプションで以下を指定できます:
--apikey [key]アカウントにリンクするAPIキー
設定
npx @capgo/cli channel set [channelId] [appId]
[appId] はアプリIDです。フォーマットについてはこちらで説明されています
オプションで以下を指定できます:
--bundle [123]クラウドに既に送信済みのアプリバンドルを、チャンネルにリンクする場合--latestpackagejson:versionからバンドルバージョンを取得、--bundleとの併用不可--state [ normal | default ]チャンネルの状態を設定、normalまたはdefaultを指定可能 1つのチャンネルはdefaultである必要があります--downgradeチャンネルがデバイスにダウングレードバージョンを送信することを許可--no-downgradeチャンネルがデバイスにダウングレードバージョンを送信することを禁止--upgradeチャンネルがデバイスにアップグレード(メジャー)バージョンを送信することを許可--no-upgradeチャンネルがデバイスにアップグレード(メジャー)バージョンを送信することを禁止--iosチャンネルがiOSデバイスにバージョンを送信することを許可--no-iosチャンネルがiOSデバイスにバージョンを送信することを禁止--androidチャンネルがAndroidデバイスにバージョンを送信することを許可--no-androidチャンネルがAndroidデバイスにバージョンを送信することを禁止--self-assignデバイスがこのチャンネルに自己割り当てすることを許可--no-self-assignデバイスがこのチャンネルに自己割り当てすることを禁止--disable-auto-update STRATEGYこのチャンネルの自動更新戦略を無効化 可能なオプション: major, minor, metadata, none--apikey [key]アカウントにリンクするAPIキー
更新無効化戦略
古いバージョンの更新を無効化する方法がいくつかあります
Capgoはネイティブコードを更新できないため、古いネイティブコードを持つバージョンから更新されたネイティブコードを持つバージョンへの更新はできないようにする必要があります
これを実現するには複数の方法があります
まず、major戦略 これは000から100への更新を防ぎます メジャーは強調表示された数字(100と000)です
次に、minor戦略 これは000から110への更新や110から120への更新を防ぎます
注意この戦略は010から110への更新は防げません
3番目に、patch戦略 これはとても厳格なモードとしてcapgoに追加されました 完全に動作を理解している場合を除き、使用は推奨されません
更新を許可するには、以下の条件を満たす必要があります:
- 新旧バージョン間でメジャーバージョンが同じ
- 新旧バージョン間でマイナーバージョンが同じ
- 新バージョンのパッチが旧バージョンのパッチより大きい
以下は更新が許可または拒否されるシナリオの例です
- 00311 -> 00314 ✅
- 000 -> 00314 ✅
- 00316 -> 00314 ❌
- 01312 -> 00314 ❌
- 10312 -> 00314 ❌
最後に最も複雑な戦略であるmetadata戦略
まず知っておく必要があるのは、有効化した直後は必要なメタデータがチャンネルにないため更新は失敗するということです
チャンネルにメタデータがない場合、このようなメッセージが表示されます:

このように表示された場合、失敗しているチャンネルの現在のバンドルにメタデータを設定する必要があることがわかります
まず、どのチャンネルが失敗しているかを特定します。misconfigured列を確認することでわかります

失敗しているチャンネルに移動し、Bundle numberをクリックしてください。これでバンドルページに移動します。

そこでMinimal update versionフィールドに入力します。これはsemverである必要があります。
入力値がsemverでない場合はエラーが表示されますが、すべて正しければ次のように表示されるはずです:

更新するたびにこのデータを手動で設定したくないかもしれません。幸いなことに、CLIはこのメタデータなしでの更新を防止します。

metadataオプションを使用する際にバンドルを正しくアップロードするには、有効なsemverで--min-update-versionを渡す必要があります。このようになります:

--min-update-versionは互換性を確保する唯一の方法ではありません。
--auto-min-update-versionも存在します。これは次のように動作します:
まず、チャンネルに現在アップロードされているバージョンを確認します。bundle compatibilityコマンドと同様に互換性をチェックします。
次に、新しいバージョンが100%互換性がある場合、チャンネル内の最新バージョンのmin_update_versionを再利用します。
そうでない場合、新しくアップロードされたバージョンのバンドル番号をmin_update_versionとして設定します。
このオプションを使用する際は、常にmin_update_versionの情報が表示されます。このように表示されます:

新しいバージョンに互換性がない場合は、このように表示されます:

エンドツーエンド暗号化(トラストレス)
Capgoはエンドツーエンド暗号化をサポートしています。これはバンドル(コード)がクラウドに送信される前に暗号化され、デバイス上で復号化されることを意味します。そのために、RSAキーペアを生成する必要があります。次のコマンドで生成できます。
暗号化システムはRSAとAESの組み合わせで、RSAキーはAESキーの暗号化に使用され、AESキーはファイルの暗号化に使用されます。
暗号化システムの詳細については以下をご覧ください:

暗号化スキーマ
アプリのキーを作成する
npx @capgo/cli key create
オプションで、--forceを指定して既存のキーを上書きできます。このコマンドはアプリにキーペアを作成し、プライベートキーを安全な場所に保存するよう促します。プライベートキーはgitにコミットせず、誰とも共有しないことをお勧めします。
ローカルでテストした後、設定ファイルからキーを削除し、
key saveでCIステップに追加してください。
アプリ設定にキーを保存する
npx @capgo/cli key save
オプションで以下を指定できます:
--key [/path/to/my/private_key] プライベートキーのパス
--key-data [privateKey] インラインで使用する場合のプライベートキーデータ。このコマンドは、推奨に従ってキーをアプリと設定にコミットしなかった場合に便利です。
CI統合
作業を自動化するために、GitHub actionsを使用してサーバーにプッシュすることをお勧めします。
デモアプリ
APIキーでCI環境変数を設定することを忘れないでください。