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

認証情報の管理

クラウドでのビルドをスムーズに行うため、iOSおよびAndroidのビルド用認証情報をローカルで管理します。

Capgo CLI は、ビルド用の認証情報を お使いのマシンに保存します。 — Capgo のサーバーには決して保存されません。デフォルトでは、1つの グローバルな ファイルに保存され、 ~/.capgo-credentials/credentials.jsonすべてのプロジェクトで共有されます。プロジェクトごとに保つには --local 個別に保つには プロジェクトごとに における .capgo-credentials.json 代わりに --per-project を渡してください。ビルドを実行すると、保存された認証情報が自動的に使用され、Capgo に安全に送信された後、ビルド完了後に削除されます。

保存された認証情報を扱う最も簡単な方法は、対話型マネージャーを使用することです。これを使用すると、TUI(既存のツールと同じもの)が起動し、 build init 保存されている情報の閲覧、アプリやプラットフォームごとの設定確認、CI/CDで利用可能なファイルの書き出し、 .env または特定のプラットフォームの認証情報の削除が可能です:

ターミナル
bunx @capgo/cli@latest build credentials manage
オプション説明
--appId <appId>管理するApp(未指定の場合は選択を促します)
--platform <ios|android>管理するPlatform(未指定の場合は選択を促します)
--localプロジェクトごとの設定を使用する .capgo-credentials.json グローバルファイルではなく

単発のスクリプト化可能なコマンドのほうがいいですか?以下の個別コマンドを使ってください。

ビルド用の認証情報をローカルに保存し、自動で使えるようにします:

ターミナル
bunx @capgo/cli@latest build credentials save --platform <ios|android> [options]

すべてを再入力せずに、既存の認証情報を部分的に更新します:

ターミナル
bunx @capgo/cli@latest build credentials update --platform <ios|android> [options]

この update コマンドで使用される 追加マージ プロビジョニングプロファイル用 — 新しいプロファイルは既存のものとマージされます。プロビジョニングマップ全体を置き換えるには、以下を追加してください: --overwrite-ios-provisioning-map.

例 — 既存の認証情報に拡張プロファイルを追加する場合:

ターミナル
bunx @capgo/cli@latest build credentials update \
--platform ios \
--ios-provisioning-profile "com.example.app.widget=./widget_profile.mobileprovision"

updateコマンドは、以下と同じオプションを受け入れます: save ただし、すべてオプションです。指定したフィールドのみが更新されます。

保存されている現在の認証情報を表示します(パスワードはマスクされます):

ターミナル
bunx @capgo/cli@latest build credentials list
# List credentials for a specific app
bunx @capgo/cli@latest build credentials list --appId com.example.app

ローカルマシンから保存済みの認証情報を削除します:

ターミナル
# Clear all credentials
bunx @capgo/cli@latest build credentials clear
# Clear credentials for a specific app + platform
bunx @capgo/cli@latest build credentials clear --appId com.example.app --platform ios

従来のシングルプロファイル形式から新しいマルチターゲット形式へ変換します:

ターミナル
bunx @capgo/cli@latest build credentials migrate --platform ios

migrateコマンドは古い BUILD_PROVISION_PROFILE_BASE64 認証情報を検出し、変換して CAPGO_IOS_PROVISIONING_MAPレガシーキーを削除します。詳細は シングルプロファイルからの移行 をご覧ください。

ターミナル
bunx @capgo/cli@latest build credentials save \
--platform ios \
--certificate ./cert.p12 \
--p12-password "YourP12Password" \
--ios-provisioning-profile "com.example.app=./profile.mobileprovision" \
--apple-key ./AuthKey_ABC1234567.p8 \
--apple-key-id "ABC1234567" \
--apple-issuer-id "00000000-0000-0000-0000-000000000000" \
--apple-team-id "TEAM123456"
オプション説明必須
--certificate <path>.p12証明書ファイルへのパスはい (リリース用)
--p12-password <password>.p12証明書のパスワードはい (リリース用)
--ios-provisioning-profile <mapping>Provisioning profileのマッピング (bundleId=path)。マルチターゲットアプリでは繰り返し指定できます。プロファイルが1つだけで bundleId のプレフィックスがない場合、CLI がプロファイルから自動的に推測します。はい (リリース用)
--apple-key <path>App Store Connect API .p8キーへのパス注¹を参照
--apple-key-id <id>App Store Connect API Key ID注¹を参照
--apple-issuer-id <id>App Store Connect API Issuer ID (UUID)注¹を参照
--apple-team-id <id>App Store Connect チーム IDはい
--apple-id <email>app-specific passwordでのアップロードに使うApple IDメールアドレス (API キーの代替)注²を参照
--apple-app-specific-password <password>app-specific password (xxxx-xxxx-xxxx-xxxx)注²を参照
--apple-app-id <id>App Store Connectの数値アプリID (例: 1234567890)注²を参照
--ios-distribution <mode>配布モード: app_store (デフォルト) または ad_hocいいえ
--output-uploadビルド成果物に対する有効期限付き Capgo ダウンロードリンクを有効にするいいえ (デフォルト: false)
--output-retention <seconds>ビルド成果物の保持期間(例: 3600s)いいえ (デフォルト: 3600s)
--skip-build-number-bumpビルド番号の自動インクリメントをスキップいいえ

iOS の認証情報を保存すると、CLI が以下を行います:

  1. 証明書とプロビジョニングプロファイルファイルを読み取ります
  2. それらをbase64形式に変換します
  3. それらを以下に保存します ~/.capgo-credentials/credentials.json (または .capgo-credentials.json を使用して --local)
  4. パスワードと ID をプレーンテキストとして保存します(ローカルファイルのみ)

保存されるファイル構造:

{
"ios": {
"BUILD_CERTIFICATE_BASE64": "...",
"CAPGO_IOS_PROVISIONING_MAP": "{\"com.example.app\":{\"profile\":\"...\",\"name\":\"match AppStore com.example.app\"}}",
"APPLE_KEY_CONTENT": "...",
"P12_PASSWORD": "...",
"APPLE_KEY_ID": "ABC1234567",
"APPLE_ISSUER_ID": "...",
"APP_STORE_CONNECT_TEAM_ID": "TEAM123456",
"CAPGO_IOS_DISTRIBUTION": "app_store"
}
}
ターミナル
bunx @capgo/cli@latest build credentials save \
--platform android \
--keystore ./release.keystore \
--keystore-alias "my-key-alias" \
--keystore-key-password "KeyPassword123" \
--keystore-store-password "StorePassword123" \
--play-config ./play-store-service-account.json
オプション説明必須
--keystore <path>.keystore または .jks ファイルへのパスはい (リリース用)
--keystore-alias <alias>keystore 内のキーエイリアスはい (リリース用)
--keystore-key-password <password>キーエイリアスのパスワードはい (リリース用)
--keystore-store-password <password>Keystoreのパスワードはい (リリース用)
--play-config <path>Play StoreサービスアカウントJSONのパスはい (申請用)

Androidの認証情報を保存すると、CLIは以下の処理を行います:

  1. KeystoreとサービスアカウントのJSONファイルを読み込みます
  2. それらをbase64形式に変換します
  3. それらを以下に保存します ~/.capgo-credentials/credentials.json (または .capgo-credentials.json を使用して --local)
  4. パスワードとエイリアスを平文で保存(ローカルファイルのみ)

保存されるファイル構造:

{
"android": {
"ANDROID_KEYSTORE_FILE": "...",
"PLAY_CONFIG_JSON": "...",
"KEYSTORE_KEY_ALIAS": "my-key-alias",
"KEYSTORE_KEY_PASSWORD": "...",
"KEYSTORE_STORE_PASSWORD": "..."
}
}

認証情報を保存すると、ビルド時に自動で使われます:

ターミナル
# Credentials automatically loaded from ~/.capgo-credentials/credentials.json
bunx @capgo/cli@latest build request com.example.app --platform ios

環境変数で保存済みの認証情報を上書きすることもできます:

ターミナル
# Environment variables take precedence over saved credentials
BUILD_CERTIFICATE_BASE64="..." \
P12_PASSWORD="different-password" \
bunx @capgo/cli@latest build request com.example.app --platform ios

優先順位:

  1. 環境変数(最優先)
  2. 保存済みの認証情報(~/.capgo-credentials/credentials.json、またはローカル) .capgo-credentials.json)
  3. 認証情報なし(最低優先度)

保存されている認証情報をリストアップします:

ターミナル
bunx @capgo/cli@latest build credentials list

出力例:

📋 Saved Build Credentials:
iOS Credentials:
✓ Certificate (base64)
✓ Provisioning Map (JSON)
✓ Apple Key Content (base64)
✓ P12 Password: ********
✓ Apple Key ID: ABC1234567
✓ Apple Issuer ID: 00000000-0000-0000-0000-000000000000
✓ Team ID: TEAM123456
Android Credentials:
✓ Keystore (base64)
✓ Play Store Config (base64)
✓ Keystore Alias: my-key-alias
✓ Key Password: ********
✓ Store Password: ********
Location: ~/.capgo-credentials/credentials.json
🔒 These credentials are stored locally on your machine only.
When building, they are sent to Capgo but NEVER stored there.
They are auto-deleted after build completion.

セキュリティのベストプラクティス

「セキュリティベストプラクティス」セクション
  1. ファイル権限

    ターミナル
    # Global credentials directory + file
    chmod 700 ~/.capgo-credentials
    chmod 600 ~/.capgo-credentials/credentials.json
    # Local (per-project) credentials, if you use --local
    chmod 600 .capgo-credentials.json
  2. 認証情報をコミットしない

    ターミナル
    # Ignore the per-project credentials file (used with --local)
    echo ".capgo-credentials.json" >> .gitignore

    グローバルファイルはリポジトリ外のホームディレクトリに保存されます。

  3. 認証情報の分離

    • ローカル開発とCI/CDで異なる認証情報を使用してください
    • 認証情報を定期的に更新してください
    • チームメンバー間で認証情報を共有しないでください

CI/CD環境では、 保存された認証情報よりも 環境変数の使用を推奨します。

「すぐに使える .env をエクスポート(推奨)」セクション

各認証ファイルを手動で base64 エンコードする代わりに(詳細は 以下), let build credentials manage 以下のファイルを生成します:

ターミナル
bunx @capgo/cli@latest build credentials manage
# pick your app → choose "Export to .env"

このファイルには、 .env.capgo.<appId>.<platform> ファイル(権限 0600) に保存されたすべての認証情報が環境変数として書き込まれます。各行が CI/CD プロバイダーに追加すべきシークレットです。デフォルトでは両方のプラットフォームが組み込まれています。特定のプラットフォームのみに限定する場合は、 --platform ios または --platform android を追加してください。

環境変数のリファレンス完全版

「環境変数のリファレンス完全版」セクション

CLI は、認証情報として以下の環境変数を読み取ります:

iOS 認証情報:

変数説明フォーマット必須
BUILD_CERTIFICATE_BASE64code の署名用 P12/PKCS12 証明書Base64はい (リリース用)
CAPGO_IOS_PROVISIONING_MAPbundle IDからプロビジョニングプロファイルデータへのJSONマップJSON文字列はい (リリース用)
P12_PASSWORDP12証明書のパスワードプレーンテキスト任意
APPLE_KEY_IDApp Store Connect API Key ID文字列(例: “ABC1234567”)注¹を参照
APPLE_ISSUER_IDApp Store Connect API Issuer IDUUID文字列注¹を参照
APPLE_KEY_CONTENTApp Store Connect API キー (.p8 ファイルの内容)Base64注¹を参照
APP_STORE_CONNECT_TEAM_IDApple Developer Team ID文字列 (例: “XXXXXXXXXX”)はい
CAPGO_IOS_DISTRIBUTION配布モード: app_store (デフォルト) または ad_hoc文字列いいえ

Android 認証情報:

変数説明フォーマット必須
ANDROID_KEYSTORE_FILEAPK/AAB署名用のKeystoreファイルBase64はい (リリース用)
KEYSTORE_KEY_ALIASKeystore内のKey alias文字列はい (リリース用)
KEYSTORE_KEY_PASSWORDKey aliasのパスワードプレーンテキストはい*
KEYSTORE_STORE_PASSWORDKeystoreファイルのパスワードプレーンテキストはい*
PLAY_CONFIG_JSONGoogle Play サービスアカウントの JSONBase64はい (申請用)

*パスワードが1つのみ指定された場合、両方に使用されます KEYSTORE_KEY_PASSWORD と KEYSTORE_STORE_PASSWORD.

.github/workflows/build.yml
name: Cloud Build
on:
push:
branches: [main]
jobs:
build-ios:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: oven-sh/setup-bun@v2
- run: bun install
- run: bunx @capgo/cli@latest build request com.example.app --platform ios
env:
CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
CAPGO_IOS_PROVISIONING_MAP: ${{ secrets.CAPGO_IOS_PROVISIONING_MAP }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }}
APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }}
APPLE_KEY_CONTENT: ${{ secrets.APPLE_KEY_CONTENT }}
APP_STORE_CONNECT_TEAM_ID: ${{ secrets.APP_STORE_CONNECT_TEAM_ID }}
build-android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: oven-sh/setup-bun@v2
- run: bun install
- run: bunx @capgo/cli@latest build request com.example.app --platform android
env:
CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}
ANDROID_KEYSTORE_FILE: ${{ secrets.ANDROID_KEYSTORE_FILE }}
KEYSTORE_KEY_ALIAS: ${{ secrets.KEYSTORE_KEY_ALIAS }}
KEYSTORE_KEY_PASSWORD: ${{ secrets.KEYSTORE_KEY_PASSWORD }}
KEYSTORE_STORE_PASSWORD: ${{ secrets.KEYSTORE_STORE_PASSWORD }}
PLAY_CONFIG_JSON: ${{ secrets.PLAY_CONFIG_JSON }}

CI/CDのシークレット用に、認証ファイルをbase64に変換するには:

ターミナル
# iOS Certificate (.p12)
base64 -i certificate.p12 | tr -d '\n' > certificate_base64.txt
# iOS Provisioning Profiles — use the CLI to generate CAPGO_IOS_PROVISIONING_MAP:
bunx @capgo/cli@latest build credentials save --platform ios \
--ios-provisioning-profile "com.example.app=./profile.mobileprovision" \
# ... other options
# Then copy CAPGO_IOS_PROVISIONING_MAP from ~/.capgo-credentials/credentials.json to your CI secrets
# iOS App Store Connect Key (.p8)
base64 -i AuthKey_XXXXXX.p8 | tr -d '\n' > apple_key_base64.txt
# Android Keystore (.keystore or .jks)
base64 -i release.keystore | tr -d '\n' > keystore_base64.txt
# Google Play Service Account JSON
base64 -i play-store-service-account.json | tr -d '\n' > play_config_base64.txt

このアプローチがより安全な理由は以下の通りです:

  • シークレットはCI/CDプラットフォームで管理
  • ランナー上に認証ファイルを残さない
  • 容易なローテーションとアクセス制御
  • シークレット使用の監査ログ

定期的に認証情報をローテーションしてください:

  1. iOSと:毎年新しい証明書と API キーを生成する
  2. Androidでは:毎年 keystore のパスワードを変更する
  3. チーム体制に変更があった後:チームメンバーが離脱したらローテーションする

保存済みの認証情報を更新:

ターミナル
# Re-run save command with new credentials
bunx @capgo/cli@latest build credentials save --platform ios --certificate ./new-cert.p12 ...

ビルドで「認証情報が見つかりません」と表示された場合:

  1. 認証情報が保存されているか確認してください:

    ターミナル
    bunx @capgo/cli@latest build credentials list
  2. 認証情報が不足している場合は保存してください:

    ターミナル
    bunx @capgo/cli@latest build credentials save --platform ios ...
  3. 認証情報ファイルが存在することを確認してください:

    ターミナル
    ls -la ~/.capgo-credentials/credentials.json # global
    ls -la .capgo-credentials.json # local (--local)

認証情報の読み取り時に「Permission denied」が発生する

「認証情報の読み取り時に「Permission denied」が発生する」セクション

ファイル権限を修正する:

ターミナル
chmod 600 ~/.capgo-credentials/credentials.json # global
chmod 600 .capgo-credentials.json # local

正しいプラットフォームが指定されているか確認してください:

ターミナル
# Make sure --platform matches saved credentials
bunx @capgo/cli@latest build request com.example.app --platform ios # Uses ios credentials
bunx @capgo/cli@latest build request com.example.app --platform android # Uses android credentials

認証情報が破損していると思われる場合:

ターミナル
# Clear all credentials
bunx @capgo/cli@latest build credentials clear
# Save again
bunx @capgo/cli@latest build credentials save --platform ios ...

現在環境変数を使用している場合は、保存済みの認証情報に移行できます:

  1. 現在の環境変数を抽出する

    ターミナル
    echo $BUILD_CERTIFICATE_BASE64 # Verify they exist
  2. base64ファイルを元のファイルにデコードする (必要な場合)

    ターミナル
    echo "$BUILD_CERTIFICATE_BASE64" | base64 -d > cert.p12
    echo "$BUILD_PROVISION_PROFILE_BASE64" | base64 -d > profile.mobileprovision
  3. CLI を使用して保存

    ターミナル
    bunx @capgo/cli@latest build credentials save \
    --platform ios \
    --certificate ./cert.p12 \
    --ios-provisioning-profile ./profile.mobileprovision \
    --p12-password "$P12_PASSWORD" \
    --apple-key-id "$APPLE_KEY_ID" \
    --apple-issuer-id "$APPLE_ISSUER_ID" \
    --apple-team-id "$APP_STORE_CONNECT_TEAM_ID"

    旧形式で保存されている認証情報がある場合 (単一 BUILD_PROVISION_PROFILE_BASE64), run:

    ターミナル
    bunx @capgo/cli@latest build credentials migrate --platform ios

    これにより、従来のシングルプロファイルが CAPGO_IOS_PROVISIONING_MAP に変換され、古い BUILD_PROVISION_PROFILE_BASE64 と APPLE_PROFILE_NAME キーが削除されます。

  4. ビルドをテストする

    ターミナル
    bunx @capgo/cli@latest build request com.example.app --platform ios
  5. 環境変数を削除 (任意)

    ターミナル
    unset BUILD_CERTIFICATE_BASE64 BUILD_PROVISION_PROFILE_BASE64

認証情報は単一のJSONファイルに保存されます:

  • グローバル (デフォルト): ~/.capgo-credentials/credentials.json — すべてのプロジェクトで共有されます
  • ローカル ( --local): .capgo-credentials.json プロジェクトルート内 — そのプロジェクトのグローバルファイルを上書きします

ファイルは初めて認証情報を保存したときに自動で作成されます。追加するには .capgo-credentials.json あなたの .gitignore これにより、プロジェクトごとの認証情報がコミットされることはありません。

ヘルプが必要ですか?

「お困りですか?」セクション

「認証情報の管理」の次のステップへ

「「認証情報の管理」の次のステップへ」セクション

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