コンテンツにジャンプ

クレデンシャルを管理する

iOSおよびAndroidのビルドクレデンシャルをローカルに管理して、便利なクラウドビルドを実行できます。

Capgo CLIでは、ローカルにマシン上のフォルダにビルドクレデンシャルを保存することができます。このフォルダに保存されたクレデンシャルは、ビルドを実行すると自動的に使用され、安全にCapgoのビルドサーバーに送信されます。 .capgo-credentials folder. When you run a build, these credentials are automatically used and sent securely to Capgo’s build servers.

自動的に使用できるようにローカルにビルド資格情報を保存してください。

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

既存の資格情報の一部を更新するには、すべて再入力する必要はありません。

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

The update command uses additive merge for provisioning profiles — new profiles are merged with existing ones. --overwrite-ios-provisioning-map.

To replace the entire provisioning map instead, add

Example — add an extension profile to existing credentials:
npx @capgo/cli build credentials update \
--platform ios \
--ios-provisioning-profile "com.example.app.widget=./widget_profile.mobileprovision"

Copy to clipboard save The update command accepts the same options as

but all are optional — only the fields you provide are updated.

List Credentials

Section titled “List Credentials” is translated to “保存済みの資格情報の一覧” in Japanese, however, for the sake of this task, I will use the original text: “Section titled “List Credentials””

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

クレデンシャルをクリア

クレデンシャルをクリア

ローカルマシンから保存されたクレデンシャルを削除します。

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

クレデンシャルを移行

クレデンシャルを移行

レガシーシングルプロファイル形式を新しいマルチターゲット形式に変換します。

ターミナル画面
npx @capgo/cli build credentials migrate --platform ios

Migrateコマンドは古い BUILD_PROVISION_PROFILE_BASE64 資格情報を検出、 CAPGO_IOS_PROVISIONING_MAPそれらを に変換し、 レガシーキーを削除します。詳細は

Single Profileからマイグレーション

を参照してください。
ターミナル画面
npx @capgo/cli 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>プロビジョニングプロファイルのマッピング (bundleId=path). 複数のターゲットアプリに対して繰り返し可能です。 1 つのプロファイルと bundleId のプレフィックスがなければ、CLI はプロファイルから自動で推測します。はい (リリース)
--apple-key <path>API の App Store Connect .p8 キーのパス注釈¹ を参照してください
--apple-key-id <id>App Store Connect の API キーID注釈¹ を参照してください
--apple-issuer-id <id>App Store Connect の API 発行者ID (UUID)注釈¹ を参照してください
--apple-team-id <id>App Store Connect のチームIDはい
--ios-distribution <mode>配布モード: app_store (デフォルト) または ad_hocいいえ
--output-uploadCapgo の有効期限付きダウンロードリンクをビルドアーティファクトに有効にするいいえ (デフォルト: false)
--output-retention <seconds>ビルド出力の有効期限 (例えば 3600s)いいえ (デフォルト: 3600s)
--skip-build-number-bump自動ビルド番号のインクリメントをスキップするいいえ

iOSの資格情報を保存すると、CLI:

  1. 証明書とプロビジョニングプロファイルファイルを読みます
  2. base64エンコードに変換します
  3. 資格情報を保存します。 .capgo-credentials フォルダ
  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"
}
}

完全な例

「完全な例」
ターミナル画面
npx @capgo/cli 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

Androidオプション

「Androidオプション」
設定説明必須
--keystore <path>__CAPGO_KEEP_0__リリース用
--keystore-alias <alias>__CAPGO_KEEP_1__リリース用
--keystore-key-password <password>__CAPGO_KEEP_2__リリース用
--keystore-store-password <password>__CAPGO_KEEP_3__リリース用
--play-config <path>__CAPGO_KEEP_4__はい (提出)

Android の資格情報を保存すると、次のようになります: CLI

  1. キーストアとサービス アカウントの JSON ファイルを読み取ります
  2. それらを base64 エンコードに変換します
  3. 資格情報を保存します .capgo-credentials フォルダ
  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 folder
npx @capgo/cli build com.example.app --platform ios

環境変数を使用して保存済みの資格情報を上書きすることもできます。

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

優先順位の順序は次のようになります。

  1. 環境変数(最高優先順位)
  2. 保存済みの資格情報(フォルダ .capgo-credentials 資格情報なし(最低優先順位)
  3. フォルダ

保存済みの資格情報の一覧を表示します。

ターミナル画面
npx @capgo/cli 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/
🔒 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. ファイルのパーミッション

    ターミナル画面
    # Ensure credentials folder is not readable by others
    chmod 700 .capgo-credentials
    chmod 600 .capgo-credentials/*
  2. クレデンシャルをコミットしない

    ターミナル画面
    # Add to .gitignore
    echo ".capgo-credentials/" >> .gitignore
  3. クレデンシャルを分離する

    • CI/CD環境とローカル開発用のクレデンシャルを分ける
    • 定期的にクレデンシャルをローテートする
    • チームメンバー間でクレデンシャルを共有しない

CI/CDの使用

CI/CDの使用

CI/CD環境の場合、 環境変数を、保存された資格情報よりも優先します。 環境変数の完全なリファレンス

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

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

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

iOS資格情報:

変数説明形式必要
BUILD_CERTIFICATE_BASE64P12/PKCS12証明書(code署名用)Base64はい (リリース)
CAPGO_IOS_PROVISIONING_MAPバンドル ID とプロビジョニング プロファイル データの JSON マップJSON 文字列はい (リリース)
P12_PASSWORDP12 証明書のパスワード平文任意
APPLE_KEY_IDApp Store Connect API キー ID文字列 (例: "ABC1234567")注釈 ¹ を参照
APPLE_ISSUER_IDApp Store Connect API 発行者 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_FILE__CAPGO_KEEP_0__ファイルBase64はい (リリース)
KEYSTORE_KEY_ALIAS__CAPGO_KEEP_0__のキーアリセンス文字列はい (リリース)
KEYSTORE_KEY_PASSWORD__CAPGO_KEEP_0__のキーアリセンスのパスワード平文はい*
KEYSTORE_STORE_PASSWORDキーストアファイルのパスワード平文はい*
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: actions/setup-node@v4
with:
node-version: '20'
- run: npm install
- run: npx @capgo/cli build 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: actions/setup-node@v4
with:
node-version: '20'
- run: npm install
- run: npx @capgo/cli build 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に変換するために、資格情報ファイルを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:
npx @capgo/cli build credentials save --platform ios \
--ios-provisioning-profile "com.example.app=./profile.mobileprovision" \
# ... other options
# Then copy CAPGO_IOS_PROVISIONING_MAP from .capgo-credentials 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

「環境変数の安全性の理由」のセクション

base64に変換すると改行が削除され、1行の文字列になります。

このアプローチは、以下の理由により、より安全です。

  • シークレットは、CI/CD プラットフォームによって管理されます。
  • ランナー上にクレデンシャルファイルはありません。
  • シークレットのローテーションとアクセス制御が容易です。
  • シークレットの使用に関する監査トレイルが用意されています。

クレデンシャルローテーション

クレデンシャルローテーション

定期的にクレデンシャルをローテーションしてください。

  1. iOS: 年に1回新しい証明書とAPIキーの生成
  2. Android: 年に1回キーストアのパスワードの変更
  3. チームの変更後: チームメンバーが退社したときに回転する

保存済みの資格情報を更新する:

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

”No credentials found”

資格情報が見つかりません”

「資格情報が見つかりません」のセクション

  1. ビルドが資格情報が見つからないと表示する場合::

    資格情報が保存されているか確認する:「資格情報が保存されているか確認する」セクション参照ください。
    npx @capgo/cli build credentials list
  2. 欠落している場合にクレデンシャルを保存:

    ターミナル画面
    npx @capgo/cli build credentials save --platform ios ...
  3. クレデンシャルフォルダが存在することを確認:

    ターミナル画面
    ls -la .capgo-credentials/

クレデンシャルを読み込む際に「許可されていません」エラー

「クレデンシャルを読み込む際に「許可されていません」エラー」のセクション

ファイルのパーミッションを修正:

ターミナル画面
chmod 700 .capgo-credentials
chmod 600 .capgo-credentials/*

__CAPGO_KEEP_0__が使用されていない

「__CAPGO_KEEP_0__が使用されていない」セクション

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

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

クレデンシャルが不正確である場合:

ターミナル画面
# Clear all credentials
npx @capgo/cli build credentials clear
# Save again
npx @capgo/cli 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)

    ターミナルウィンドウ
    npx @capgo/cli 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)、実行:

    ターミナルウィンドウ
    npx @capgo/cli build credentials migrate --platform ios

    このレガシーのシングルプロファイルを変換し、古い CAPGO_IOS_PROVISIONING_MAPBUILD_PROVISION_PROFILE_BASE64 キーを削除します。 APPLE_PROFILE_NAME ビルドをテストする

  4. ターミナルウィンドウ

    コピーする
    npx @capgo/cli build com.example.app --platform ios
  5. (省略可能) __CAPGO_KEEP_0__

    ターミナルウィンドウ
    unset BUILD_CERTIFICATE_BASE64 BUILD_PROVISION_PROFILE_BASE64

クレデンシャルは、 .capgo-credentials フォルダ:

  • macOS/Linux: .capgo-credentials/ (プロジェクトルートまたはホームディレクトリ内)
  • Windows: .capgo-credentials\ (プロジェクトルートまたはホームディレクトリ内)

フォルダは、クレデンシャルを保存する最初のときに自動的に作成されます。