メイン コンテンツにスキップ
Tutorial

Capgo Environment Best Practices: Staging with One Mobile App ID

A practical guide to avoid duplicate app IDs and fragile runtime flags by using Capgo channels for staging, QA, and production in Capacitor apps.

Martin Donadieu

Martin Donadieu

Content Marketer

Capgo Environment Best Practices: Staging with One Mobile App ID

Teams usually choose one of three approaches for mobile environments:

  1. Two app IDs (production + pre-production)
  2. One app ID + dynamic runtime environment switching
  3. One app ID + Capgo channels

最初の2つは機能しますが、長期的な摩擦を生み出します。実際のチームでは、Capgo チャネル モデルは通常、最も綺麗です。

重複したアプリ ID がノイズになる理由

使用 com.myapp そして com.myapp.beta 簡単に思えるが、すぐに複製が発生します:

  • 2 つのリリース Pipelines
  • 2 つのプッシュ ID、ディープ リンク、およびエンタイトルメント マッピング
  • 2 つの分析とクラッシュ ID
  • 環境間で異なる構成と一貫した動作

アプリ ID + ランタイム Switch パターンは、通常、起動時に環境変数またはフラグを読み取り、API、キー、および更新動作をダイナミックに再設定します。

アプリ ID が 1 つ + ランタイム Switch パターンは、通常、起動時に環境変数またはフラグを読み取り、API、キー、および更新動作をダイナミックに再設定します。

アプリ ID が 1 つ + ランタイム Switch パターンは、通常、起動時に環境変数またはフラグを読み取り、API、キー、および更新動作をダイナミックに再設定します。

これは次まで機能します:

  • QAが予定されたフローを回避するようになったのは、構成状態が古いためです。
  • 誰かが実稼働で間違ったエンドポイントを使用した場合
  • 環境の変化が再現が難しいバグを引き起こす
  • ユーザー端末で「このバイナリが使用している構成バージョンは何ですか?」というデバッグが必要になります。

これらの複雑さはリリースごとに増加し、チームの速度が低下するのはここです。

The Capgo way: one app ID, many channels

Capgo makes environment control explicit through channels:

  • App Store/Playで1つの実稼働アプリIDを維持します。
  • 「シェル」のためのネイティブバイナリを1つに配信します (ネイティブの変更が真の再構築を必要とするまで)。
  • チャネルによってではなく、重複したアプリのIDによって動作をルーティングします。

実際には、これは次のことを意味します:

  • production: 全てのユーザー
  • staging: 内部のQAとリリース候補
  • beta: 招待されたテスター
  • hotfix: 緊急パッチトラック

Your TestFlight/Play 内部テストアプリは、 __CAPGO_KEEP_0__ でJS/CSS/アセットの更新を繰り返し行うことができます。 新しいネイティブアプリを公開することなく、 アプリを永遠に保持することができます。 staging forever. You do JS/CSS/asset updates there repeatedly through Capgo without publishing a new native app.

ネイティブバイナリは、多くのJSの反復で同じままです:

実際にネイティブの表面領域が変更された場合にのみ、 ネイティブバイナリを再構築します。

bun run build
bunx cap sync
# generate Xcode/Android Studio archives as usual

2) 環境ごとに専用のチャネルを使用する

環境ごとにチャネルを使用して更新を公開する

Publish updates with channels:

bun run build
bunx @capgo/cli deploy --channel staging

QA環境でテスト、問題を修正し、次にプロモート:

bunx @capgo/cli promote vX.Y.Z --channel production

明示的なバージョニングを好む場合:

bunx @capgo/cli deploy vX.Y.Z --channel staging
bunx @capgo/cli promote vX.Y.Z --channel production

3) TestFlightを「常にプレプロダクション」に設定:

iOSワークフローでは、TestFlightビルドはプレプロダクションアップデートと関連付けられる:

  • JSの変更ごとに頻繁にネイティブのサブミットは必要ない。
  • QAは、ステージングチャンネル経由で近似的な生産環境でcodeを検証する。
  • プロダクションユーザーは、プロモートされた生産チャンネルパッケージのみを受信する。

4) 制御されたワークフローでのみチャンネル切り替えを使用:

高度なチーム向けに、QA/管理者ユーザー向けに制御されたチャンネル切り替えを公開する:

import { CapacitorUpdater } from '@capgo/capacitor-updater';

await CapacitorUpdater.setChannel({
  channel: 'staging',
  triggerAutoUpdate: true
});

これはオプションです。多くのチームはダッシュボードからチャンネル割り当てを使用し、すべての顧客ではなく内部ユーザー向けにのみチャンネルを切り替えます。

運用チェックリスト:

  • 1つのアプリIDのみ(生産/ステージングIDの重複なし)
  • 基本的なネイティブビルドパイプライン
  • チャネルマッピングドキュメント (staging, beta, production, hotfix)
  • CI/CDでのプロモーションパスが強制されます
  • ネイティブのリビルドは、実際のネイティブの変更のみ
  • ロールバックは定期的にテストされています

実用的な利点

このアプローチは、環境の漂流を排除し、ビルドの混乱を減らし、修正のスピードを向上させる:

  • QAはリアルなバイナリを取得します(「ステージングアプリ」の偽の「アイデンティティ」なし)、
  • テストフライトのパスは安定しています
  • チームは「2つのアプリIDの負債」を避ける
  • あなたはCapgoで迅速に多くのJSのみの修正をプッシュできます。

最終的な結果は、より単純な統治: 少ないアーティファクト、きれいなテレメトリ、リリースオペレーションの驚きの減少

Capgo 環境のベストプラクティス: 1 つのモバイル アプリ ID を使用したステージング

あなたは __CAPGO_KEEP_0__ 環境のベストプラクティス: 1 つのモバイル アプリ ID を使用したステージングを使用している場合 Capgo 環境のベストプラクティス: 1 つのモバイル アプリ ID を使用したステージング チャンネル ルーティングとステージド ロールアウトを計画するには、Cloudflare などを接続する必要があります。 チャンネル チャンネル チャンネル チャンネル ベータ テスト ソリューション ベータ テスト ソリューション ベータ テスト ソリューション ベータ テスト ソリューション バージョン対象化ソリューション バージョン対象化ソリューション用の製品ワークフロー

Capacitorアプリのリアルタイム更新

ウェブ層のバグが生じた場合、Capgoを通じて修正を配信し、App Storeの承認待ちの日数を省く。ユーザーはバックグラウンドで更新を受け取り、ネイティブの変更は通常のレビュー経路で進む。

今すぐ始める

最新のブログ記事

Capgoは、プロフェッショナルなモバイルアプリを作成するために必要な最良の洞察を提供する