コンテンツへスキップ

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-ssl S3アップロード用の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クラウドにアップロードしない
  • --tus tusプロトコルを使用してバンドルをアップロード
  • --multipart S3にデータをアップロードするためにマルチパートプロトコルを使用、非推奨、代わりにTUSを使用
  • --encrypted-checksum <encryptedChecksum> 暗号化されたチェックサム(署名) 外部バンドルをアップロードする場合のみ使用
  • --package-json <packageJson> packagejsonへのパス モノレポで有用
  • --auto-set-bundle capacitorconfigjsonでバンドルを設定
  • --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] クラウドに既に送信済みのアプリバンドルを、チャンネルにリンクする場合
  • --latest packagejson: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戦略
まず知っておく必要があるのは、有効化した直後は必要なメタデータがチャンネルにないため更新は失敗するということです
チャンネルにメタデータがない場合、このようなメッセージが表示されます:

Cannot find metadata

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

Misconfigured table

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

Locate failing channel

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

Set min version

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

CLI fail no metadata

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

CLI upload with metadata

--min-update-versionは互換性を確保する唯一の方法ではありません。 --auto-min-update-versionも存在します。これは次のように動作します:

まず、チャンネルに現在アップロードされているバージョンを確認します。bundle compatibilityコマンドと同様に互換性をチェックします。 次に、新しいバージョンが100%互換性がある場合、チャンネル内の最新バージョンのmin_update_versionを再利用します。 そうでない場合、新しくアップロードされたバージョンのバンドル番号をmin_update_versionとして設定します。

このオプションを使用する際は、常にmin_update_versionの情報が表示されます。このように表示されます:

Min update version

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

Min update version not compatible

エンドツーエンド暗号化(トラストレス)

Capgoはエンドツーエンド暗号化をサポートしています。これはバンドル(コード)がクラウドに送信される前に暗号化され、デバイス上で復号化されることを意味します。そのために、RSAキーペアを生成する必要があります。次のコマンドで生成できます。

暗号化システムはRSAとAESの組み合わせで、RSAキーはAESキーの暗号化に使用され、AESキーはファイルの暗号化に使用されます。

暗号化システムの詳細については以下をご覧ください:

How crypto works

暗号化スキーマ

アプリのキーを作成する

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を使用してサーバーにプッシュすることをお勧めします。

GitHub action チュートリアル

デモアプリ

GitHub - Cap-go/demo-app

APIキーでCI環境変数を設定することを忘れないでください。