Saltare al contenuto

Gestione delle credenziali

Gestisci i tuoi credenziali di costruzione iOS e Android localmente per costruire facilmente in cloud.

Capgo CLI conserva le tue credenziali di build sulla tua macchina — mai sui server di Capgo. Di default, vivono in un file unico ~/.capgo-credentials/credentials.jsonglobale --local condiviso da tutti i tuoi progetti. Passa per tenerle .capgo-credentials.json instead. When you run a build, the saved credentials are used automatically and sent securely to Capgo, then deleted after the build completes.

Il modo più veloce per lavorare con le tue credenziali salvate è il gestore interattivo. Si apre una finestra del terminale (lo stesso utilizzato per il build init uses .env gestore dei comandi) dove puoi esplorare cosa è memorizzato, vedere cosa è configurato per app e piattaforma, esportare un file pronto per il

CI/CD
bunx @capgo/cli@latest build credentials manage
Copia nel portapennaOpzione
--appId <appId>App per la gestione (ti chiede di scegliere se omesso)
--platform <ios|android>Piattaforma da gestire (ti chiede di scegliere se omesso)
--localUsa il file per progetto .capgo-credentials.json invece del file globale

Preferisci comandi scriptabili, uno-shot? Usa i comandi individuali qui sotto.

Ricorda i tuoi credenziali di costruzione localmente per l'uso automatico:

Finestra del terminale
bunx @capgo/cli@latest build credentials save --platform <ios|android> [options]

Aggiorna solo le credenziali esistenti senza doverle fornire nuovamente tutte:

Fenestra del terminale
bunx @capgo/cli@latest build credentials update --platform <ios|android> [options]

Il update il comando utilizza l'aggiuntivo merge per i profili di provisioning — i nuovi profili vengono uniti a quelli esistenti. Per sostituire l'intera mappa di provisioning al suo posto, aggiungi --overwrite-ios-provisioning-map.

Esempio — aggiungi un profilo di estensione alle credenziali esistenti:

Fenestra del terminale
bunx @capgo/cli@latest build credentials update \
--platform ios \
--ios-provisioning-profile "com.example.app.widget=./widget_profile.mobileprovision"

Il comando di aggiornamento accetta le stesse opzioni di save ma tutte sono facoltative — solo i campi che fornisci vengono aggiornati.

Visualizza le credenziali salvate attualmente (le password sono mascherate):

Finestra del terminale
bunx @capgo/cli@latest build credentials list
# List credentials for a specific app
bunx @capgo/cli@latest build credentials list --appId com.example.app

Rimuovi le credenziali salvate dal tuo computer locale:

Finestra del terminale
# 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

Converti il formato di profilo singolo di vecchia generazione nel nuovo formato multi-target:

Finestra del terminale
bunx @capgo/cli@latest build credentials migrate --platform ios

Il comando di migrazione rileva le credenziali vecchie BUILD_PROVISION_PROFILE_BASE64 le converte in CAPGO_IOS_PROVISIONING_MAPe rimuove le chiavi di vecchia generazione. Vedi Migrazione da Profilo Singolo per i dettagli.

Fenestra del terminale
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"
OpzioneDescrizioneRichiesto
--certificate <path>Percorso del file di certificato .p12Sì (rilascio)
--p12-password <password>Password per il file di certificato .p12Sì (rilascio)
--ios-provisioning-profile <mapping>Mappatura del profilo di provisioning (bundleId=path). Ripetibile per applicazioni multi-target. Se presente solo un profilo e nessun prefisso bundleId, CLI si auto-estende dal profilo.Sì (rilascio)
--apple-key <path>Percorso della chiave API .p8 di App Store ConnectVedi nota¹
--apple-key-id <id>ID chiave di App Store Connect APIVedi nota¹
--apple-issuer-id <id>App Store Connect API ID emittente (UUID)Vedi nota¹
--apple-team-id <id>App Store Connect ID team
--ios-distribution <mode>Modalità di distribuzione: app_store (di default) o ad_hocNo
--output-uploadAbilita un collegamento di download a tempo limitato per l'artefatto di costruzione CapgoNo (di default: false)
--output-retention <seconds>Quanto tempo mantenere gli output di costruzione (ad esempio 3600s)No (di default: 3600s)
--skip-build-number-bumpSaltare l'incremento automatico del numero di costruzioneNo

Quando si salvano le credenziali iOS, il CLI:

  1. Legge i file del certificato e del profilo di provisioning
  2. Li converte in codifica base64
  3. Li salva in ~/.capgo-credentials/credentials.json (o .capgo-credentials.json con --local)
  4. Conserva le password e gli ID in testo puro (solo file locali)

La struttura del file archiviato:

{
"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"
}
}

Sezione intitolata “Esempio completo”

See the
Finestra del terminale
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
OpzioneDescrizioneObbligatorio
--keystore <path>Percorso per il file .keystore o .jksSì (rilascio)
--keystore-alias <alias>Alias della chiave nel keystoreSì (rilascio)
--keystore-key-password <password>Password per l'alias della chiaveSì (rilascio)
--keystore-store-password <password>Password per il keystoreSì (rilascio)
--play-config <path>Percorso del file JSON del servizio account Play StoreSì (invio)

Quando si salvano le credenziali Android, il CLI:

  1. Legge i file del keystore e del servizio account JSON
  2. Li converte in codifica base64
  3. Li salva in ~/.capgo-credentials/credentials.json (o) .capgo-credentials.json con --local)
  4. Memorizza le password e gli alias come testo normale (solo file locali)

La struttura del file memorizzato:

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

Una volta salvate le credenziali, vengono utilizzate automaticamente quando si costruisce:

Finestra del terminale
# Credentials automatically loaded from ~/.capgo-credentials/credentials.json
bunx @capgo/cli@latest build request com.example.app --platform ios

Puoi anche sovrascrivere le credenziali salvate utilizzando le variabili di ambiente:

Finestra del terminale
# 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

Ordine di precedenza:

  1. Variabili di ambiente (priorità più alta)
  2. Credenziali salvate (~/.capgo-credentials/credentials.json, o locale) .capgo-credentials.json)
  3. Nessuna credenziale (priorità più bassa)

Elenco delle credenziali che hai salvato:

Finestra del terminale
bunx @capgo/cli@latest build credentials list

Esempio di output:

📋 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. Autorizzazioni dei File

    Finestra del Terminale
    # 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. Non Commettere Mai le Credenziali

    Finestra del Terminale
    # Ignore the per-project credentials file (used with --local)
    echo ".capgo-credentials.json" >> .gitignore

    Il file globale vive nella directory casella utente, fuori dal repository.

  3. Separare le Credenziali

    • Usa credenziali diverse per lo sviluppo locale vs CI/CD
    • Rimuovi regolarmente le credenziali
    • Non condividere le credenziali tra membri del team

Per ambienti CI/CD, preferisci le variabili di ambiente alle credenziali salvate.

Invece di codificare in base64 ogni file di credenziali a mano (vedi

Invece di codificare in base64 ogni file di credenziali a mano (vedi Sotto, lascia build credentials manage genera il file per te:

Fermata del terminale
bunx @capgo/cli@latest build credentials manage
# pick your app → choose "Export to .env"

Scrive un .env.capgo.<appId>.<platform> file (permessi 0600) contenente ogni credenziale salvata come variabile di ambiente — ogni riga è un segreto da aggiungere al tuo provider CI/CD. Le due piattaforme sono combinate per impostazione predefinita; aggiungi --platform ios o --platform android per limitarla a una.

Il CLI legge le seguenti variabili di ambiente per le credenziali:

Credenziali iOS:

VariabileDescrizioneFormatoRichiesto
BUILD_CERTIFICATE_BASE64Certificato P12/PKCS12 per la firma di codeBase64Sì (rilascio)
CAPGO_IOS_PROVISIONING_MAPJSON mappa degli ID pacchetti a dati di profilo di provisioningStringa JSONSì (rilascio)
P12_PASSWORDPassword per il certificato P12Testo normaleFacoltativo
APPLE_KEY_IDChiave ID di App Store Connect APIStringa (ad esempio, &quot;ABC1234567&quot;)Vedi nota¹
APPLE_ISSUER_IDID emittente di App Store Connect APIStringa UUIDVedi nota¹
APPLE_KEY_CONTENTChiave App Store Connect API (contenuto file .p8)Base64Vedi nota¹
APP_STORE_CONNECT_TEAM_IDID del team sviluppatore AppleStringa (ad esempio, “XXXXXXXXXX”)
CAPGO_IOS_DISTRIBUTIONModalità di distribuzione: app_store o ad_hocStringaNo

Credenziali Android:

VariabileDescrizioneFormatoObbligatorio
ANDROID_KEYSTORE_FILEFile del keystore per la firma APK/AABBase64Sì (rilascio)
KEYSTORE_KEY_ALIASAlias della chiave all'interno del keystoreStringaSì (rilascio)
KEYSTORE_KEY_PASSWORDPassword per l'alias della chiaveTesto puroSì*
KEYSTORE_STORE_PASSWORDPassword per il file del keystoreTesto normaleSì*
PLAY_CONFIG_JSONJSON del servizio Google PlayBase64Sì (invio)

*Se viene fornito solo un password, verrà utilizzato per entrambi KEYSTORE_KEY_PASSWORD e 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 }}

Per convertire i file dei tuoi credenziali in base64 per i segreti CI/CD:

Finestra del terminale
# 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

Questa approccio è più sicuro perché:

  • I segreti sono gestiti dalla tua piattaforma CI/CD
  • Nessun file di credenziali sui runner
  • Rotazione facile e controllo degli accessi
  • Tracce di audit per l'uso dei segreti

Rotazione regolare delle tue credenziali:

  1. iOS: Genera nuovi certificati e API chiavi ogni anno
  2. Android: Cambia le password del keystore annualmente
  3. Dopo le modifiche del team: Ruota quando i membri del team lasciano

Aggiorna le credenziali salvate:

Finestra del terminale
# Re-run save command with new credentials
bunx @capgo/cli@latest build credentials save --platform ios --certificate ./new-cert.p12 ...

Se il build dice che non sono state trovate credenziali:

  1. Controlla se le credenziali sono salvate:

    Finestra del terminale
    bunx @capgo/cli@latest build credentials list
  2. Salva le credenziali se mancanti:

    Finestra del terminale
    bunx @capgo/cli@latest build credentials save --platform ios ...
  3. Verifica l'esistenza del file delle credenziali:

    Finestra del terminale
    ls -la ~/.capgo-credentials/credentials.json # global
    ls -la .capgo-credentials.json # local (--local)

“Rifiutato il permesso” quando si legge il file delle credenziali

Sezione intitolata ““Rifiutato il permesso” quando si legge il file delle credenziali”

Correggi i permessi del file:

Finestra del terminale
chmod 600 ~/.capgo-credentials/credentials.json # global
chmod 600 .capgo-credentials.json # local

Verifica che la piattaforma corretta sia specificata:

Finestra del terminale
# 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

Se le credenziali sembrano corrotte:

Finestra del terminale
# Clear all credentials
bunx @capgo/cli@latest build credentials clear
# Save again
bunx @capgo/cli@latest build credentials save --platform ios ...

Se attualmente stai utilizzando variabili di ambiente, puoi migrare a credenziali salvate:

  1. Estrai le tue attuali variabili di ambiente

    Finestra del terminale
    echo $BUILD_CERTIFICATE_BASE64 # Verify they exist
  2. Decodifica i file base64 di ritorno ai file originali (se necessario)

    Finestra del terminale
    echo "$BUILD_CERTIFICATE_BASE64" | base64 -d > cert.p12
    echo "$BUILD_PROVISION_PROFILE_BASE64" | base64 -d > profile.mobileprovision
  3. Salva utilizzando il CLI

    Finestra del terminale
    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"

    Se hai credenziali esistenti salvate nel formato vecchio (singolo) BUILD_PROVISION_PROFILE_BASE64), esegui:

    Finestra del terminale
    bunx @capgo/cli@latest build credentials migrate --platform ios

    Questo converte il legato profilo singolo in un CAPGO_IOS_PROVISIONING_MAP e rimuove gli BUILD_PROVISION_PROFILE_BASE64 e APPLE_PROFILE_NAME chiavi.

  4. Verifica la costruzione

    Finestra del terminale
    bunx @capgo/cli@latest build request com.example.app --platform ios
  5. Elimina le variabili di ambiente (facoltativo)

    Finestra del terminale
    unset BUILD_CERTIFICATE_BASE64 BUILD_PROVISION_PROFILE_BASE64

I credenziali sono memorizzate in un file JSON unico:

  • Globale (predefinito): ~/.capgo-credentials/credentials.json — condiviso con tutti i tuoi progetti
  • Locale (con --local): .capgo-credentials.json nel root del tuo progetto — sovrascrive il file globale per quel progetto

Il file viene creato automaticamente la prima volta che si salvano le credenziali. Aggiungi .capgo-credentials.json alla tua .gitignore così le credenziali per progetto sono mai committe.

Se stai utilizzando Gestione delle credenziali per pianificare l'automazione CI/CD, connettilo con Capgo CI/CD per il flusso di lavoro del prodotto in Capgo CI/CD, Capgo Costruzioni native per il flusso di lavoro del prodotto in Capgo Costruzioni native, Capgo Integrazioni per il flusso di lavoro del prodotto in Capgo Integrazioni, Integrazione CI/CD per la dettagliata implementazione in Integrazione CI/CD, e GitHub Integrazione azioni per la dettagliata implementazione in GitHub Integrazione azioni.