メインコンテンツへスキップ

CI/CD 連携

Capgo を CI/CD パイプラインに統合することで、アプリのビルドからアップデートのデプロイまでを完全に自動化できます。Capgo CLI と semantic-release を活用すれば、一貫性のある信頼性の高いデプロイを実現し、迅速なイテレーションが可能になります。

  • 自動化: 手動作業やヒューマンエラーの余地がなくなります。ビルド、テスト、デプロイの全プロセスをエンドツーエンドで自動化できます。

  • 一貫性: すべてのデプロイが同一の手順で行われるため、予測可能で再現性の高いプロセスが保証されます。これは code に複数のチームメンバーが関わる場合に特に有効です。

  • イテレーションの高速化: デプロイを自動化することで、より頻繁に、かつ自信を持ってアップデートをリリースできます。手動のQAやリリース承認を待つ必要はありません。

Capgo CLI は、Capgo を CI/CD ワークフローに統合するための鍵となります。新しい bundle バージョンの push や、channel の管理などを行うためのコマンドを提供します。

CI/CD 統合において最も重要なコマンドは bundle upload:

ターミナル
npx @capgo/cli@latest bundle upload --channel Production --apikey YOUR_API_KEY

暗号化を使用する場合、以下のいずれかの方法で指定してください:

秘密鍵のファイルパスを指定する:

ターミナル
npx @capgo/cli@latest bundle upload --channel Production --apikey YOUR_API_KEY --key-v2 PRIVATE_KEY_PATH

秘密鍵の内容を直接指定する(CI/CDでの推奨):

ターミナル
npx @capgo/cli@latest bundle upload --channel Production --apikey YOUR_API_KEY --key-data-v2 PRIVATE_KEY_CONTENT

環境変数を使用する(CI/CDにおけるベストプラクティス):

ターミナル
npx @capgo/cli@latest bundle upload --channel Production --apikey YOUR_API_KEY --key-data-v2 "$CAPGO_PRIVATE_KEY"

CI/CD環境では、秘密鍵をファイルとしてではなく、環境変数として保存することを推奨します。設定方法は以下の通りです:

  1. 秘密鍵の内容を取得:

    ターミナル
    cat .capgo_key_v2 | pbcopy

    これで鍵の内容がクリップボードにコピーされます。

  2. CI/CD環境に追加:

    • GitHub アクション: CAPGO_PRIVATE_KEY をリポジトリのSecretsに追加
    • GitLab CI: プロジェクト設定でマスクされた変数として追加します
    • CircleCI: プロジェクト設定で環境変数として追加します
    • Jenkins: Secret text credentialとして追加します
  3. パイプラインでの使用方法:

    - run: npx @capgo/cli@latest bundle upload --channel=production --apikey=${{ secrets.CAPGO_API_KEY }} --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}"

注意: --key-data-v2 flagを使用すると、秘密鍵の内容を文字列として直接渡せるため、一時ファイルを作成したくないCI/CDパイプラインの環境変数として最適です。

このコマンドは、現在のWeb buildを指定したchannelにuploadします。通常、Web buildが正常に完了した後の、CI/CDパイプラインの最終ステップとして実行します。

CI/CDパイプラインでの Capgo のセットアップ

「CI/CDパイプラインでのCapgoのセットアップ」セクション

使用するCI/CDツールによって具体的な手順は異なりますが、Capgoを統合する一般的な流れは次のとおりです。

  1. APIキーを生成する: Capgo dashboardにログインし、新しいAPIキーを作成します。このキーはCI/CD環境でCLIを認証するために使用されます。キーは秘密に保ち、リポジトリには絶対にコミットしないでください!

  2. 次の bundle upload コマンドを設定します:CI/CD設定に、 bundle upload 適切な引数を付けたコマンドを実行するステップを追加します:

    upload.yml
    - run: npx @capgo/cli@latest bundle upload --channel=production --apikey=${{ secrets.CAPGO_API_KEY }}
    \n Production をデプロイ先のチャンネルに置き換えます。 ${{ secrets.CAPGO_API_KEY }} 環境変数に API キーを保持させ、さらに --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}" 暗号化を使用する場合に追加してください。

  3. 次を追加します: upload ウェブビルドの後のステップとして: 次の項目を確認してください: upload ステップはウェブビルドが正常に完了した後に実行されるようにしてください。これにより、常に最新の code をデプロイできます。\n 以下は GitHub Actions の設定例です:\n

    upload.yml
    name: Deploy to Capgo
    on:
    push:
    branches: [main]
    jobs:
    deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v6
    - uses: actions/setup-node@v6
    with:
    node-version: '24'
    - run: npm ci
    - run: npm run build
    - run: npm install -g @capgo/cli
    - run: npx @capgo/cli@latest bundle upload --channel=production --apikey=${{ secrets.CAPGO_API_KEY }} --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}"

Semantic-release によるバージョン管理

「Semantic-release によるバージョン管理」セクション

Capgo の推奨されるバージョン管理方法は、 capacitor.config.ts からインポートして、 package.json:

import pkg from './package.json'
const config: CapacitorConfig = {
// ... other config
plugins: {
CapacitorUpdater: {
version: pkg.version,
}
}
}

この方法なら、次のことができます:

  1. semantic-release(または他のツール)を使って、 package.json バージョンを更新
  2. 更新されたバージョンが自動的に含まれるようにアプリをビルド
  3. 正しいバージョンのbundleをアップロード

CI/CDワークフローは次のようになります:

- run: npm ci
- run: npx semantic-release # Updates package.json version
- run: npm run build # Builds with new version from capacitor.config
- run: npx @capgo/cli@latest bundle upload --channel=production --apikey=${{ secrets.CAPGO_API_KEY }}

以下は、 .releaserc semantic-release用の設定ファイルのサンプルです:

{
"branches": [
"main",
{
"name": "beta",
"prerelease": true
}
],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
[
"@semantic-release/git",
{
"assets": ["CHANGELOG.md", "package.json"],
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}
]
]
}

この設定は次の処理を行います:

  1. Conventional Commits仕様に従い、コミットメッセージを解析して次のバージョン番号を決定します。
  2. 前回のリリース以降のコミットに基づいてリリースノートを生成します。
  3. 以下を更新します: CHANGELOG.md ファイルに新しいリリースノートを書き込みます。
  4. 以下を更新します: package.json バージョン。これは capacitor.config に反映されます。
  5. 更新された以下の内容をコミットします: CHANGELOG.md, package.json、およびその他の変更されたファイルをリポジトリに書き戻します。

アプリのビルド前に semantic-release を実行してください。これにより、 package.json の更新されたバージョンが capacitor.config を通じてビルドに含まれるようになります。

ローカルのバージョンが既に Capgo にある場合の自動バンプ

「ローカルのバージョンが既に Capgo にある場合の自動バンプ」というセクション

Bundle名は一意である必要があります(削除済みのバージョンも名前を占有します)。CIが同じ package.json バージョンをアップロードし続けると、アップロードは失敗します。バージョンを上げる package.json (例:semantic-releaseを使用)ことを推奨します。それが難しい場合は、CLI に、チャンネルにリンクされたbundleの次の空きsemver、または最新のリモートアプリバージョンを選択させます:

ターミナル
npx @capgo/cli@latest bundle upload --channel=production --auto-bump
npx @capgo/cli@latest bundle upload --auto-bump major
npx @capgo/cli@latest bundle upload --auto-bump minor # default when the flag has no value
npx @capgo/cli@latest bundle upload --auto-bump patch # alias: fix
npx @capgo/cli@latest bundle upload --auto-bump metadata
npx @capgo/cli@latest bundle upload --channel=production --auto-bump ai

--auto-bump ai は Capgo Cloudflare Workers AI を使用して、ローカルのbundleファイルと前回の Capgo/channel の差分ファイルを比較し、 major | minor | patch | metadata選択して、短い理由を表示します。前回の Capgo バージョンがない場合、AIはスキップされ、 patch が適用されます.

を組み合わせないでください --auto-bump を使用して --bundle / -bを参照してください bundle upload リファレンス オプションの全一覧はこちら。

Capgo の CI/CD 連携で問題が発生した場合は、以下の項目を確認してください:

  • API キー:API キーが有効で、必要な権限を持っていることを確認してください。環境変数を使用している場合は、正しく設定されているか再確認してください。

  • CLI のバージョン:最新バージョンの Capgo CLI を使用しているか確認してください。古いバージョンでは、互換性の問題が発生したり、一部の機能が利用できなかったりする場合があります。

  • ビルド成果物:Web ビルドが期待通りの出力ファイルを生成しているか確認してください。Capgo CLI で bundle を作成するには、有効な Web ビルドが必要です。

  • ネットワーク接続:CI/CD 環境から Capgo サーバーへのネットワークアクセスが可能か確認してください。ファイアウォールやプロキシの問題が原因で、通信が妨げられることがあります。 upload コマンドを実行してください。

まだ問題が解決しない場合は、Capgo サポートにお問い合わせください。お使いのセットアップ固有の問題のトラブルシューティングを手伝ってもらえます。

適切なバージョン管理を行って Capgo を CI/CD パイプラインに統合すると、開発ワークフローを大幅に効率化できます。capacitor.config のアプローチでデプロイとバージョニングを自動化すれば、より迅速かつ自信を持ってアップデートを配信できます。

推奨される方法は、バージョンを capacitor.config.ts ファイルに設定し、semantic-release を使用して更新することです。 package.json これにより、手動のリリース作業に煩わされることなく、優れた機能の開発に集中できる、堅牢で信頼性の高いデプロイプロセスが実現します。

Capgo CLI コマンドとオプションの詳細については、 CLI リファレンスをご覧ください。また、semantic-release の設定に関する詳細は、 semantic-release のドキュメント.

デプロイを楽しんでください!

使用している場合 CI/CD 連携 CI/CD自動化を計画するには、次と連携してください Capgo での CI/CD 設定 Capgo CI/CDでのプロダクトワークフローについては、 Capgo Native Build Capgo Native Buildsでのプロダクトワークフローについては、 Capgo インテグレーション Capgo インテグレーションでのプロダクトワークフロー向けに、 GitHub Actions 連携 GitHub Actions Integration の実装詳細については、 GitLab CI/CD 連携 GitLab CI/CD Integration の実装詳細については、