Saltare al contenuto

Gestione delle credenziali

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

Capgo CLI conserva le tue credenziali di costruzione su il tuo computer – mai su Capgo’s server. Di default, vivono in un file globale , condiviso da tutti i tuoi progetti. Passa ~/.capgo-credentials/credentials.jsonper mantenerle --local to keep them per-progetto in .capgo-credentials.json invece. Quando esegui una build, i credenziali salvate vengono utilizzate automaticamente e inviate in modo sicuro a Capgo, poi cancellate dopo la completamento della build.

La modalità più veloce per lavorare con le tue credenziali salvate è il gestore interattivo. Si apre una finestra del terminale (lo stesso utilizzato) dove puoi esplorare cosa è memorizzato, vedere cosa è configurato per ogni app e piattaforma, esportare un file pronto per la CI/CD, o cancellare le credenziali di una piattaforma: build init Finestra del terminale .env Copia negli appunti

✅ Eliminati automaticamente dopo la conclusione della costruzione
bunx @capgo/cli@latest build credentials manage
OpzioneDescrizione
--appId <appId>Applicazione da gestire (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 Usa il file globale

Preferisci comandi scriptabili, eseguibili una sola volta? Utilizza i comandi individuali sotto.

Memorizza le tue credenziali di costruzione localmente per l'uso automatico:

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

Aggiorna parzialmente le credenziali esistenti senza doverle fornire nuovamente tutte:

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

Il update il comando utilizza l'incorporamento aggiuntivo per i profili di provisioning — i nuovi profili vengono incorporati con 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:

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

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

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

Fermata dei comandi
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:

Fermata dei comandi
# 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

Convertire il formato di archiviazione legacy a un solo profilo nel nuovo formato multi-target:

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

Il comando di migrazione rileva le vecchie BUILD_PROVISION_PROFILE_BASE64 credenziali, le converte nel nuovo formato e elimina le chiavi legacy. Vedi CAPGO_IOS_PROVISIONING_MAPMigrazione da un Profilo Singolo per maggiori informazioni. Salvataggio delle credenziali iOS

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"
OpzioneDescrizioneObbligatorio
--certificate <path>Percorso del file del certificato .p12Sì (rilascio)
--p12-password <password>Password del 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 del file del chiave .p8 di App Store Connect APIVedi nota¹
--apple-key-id <id>App Store Connect API ID della chiaveVedi nota¹
--apple-issuer-id <id>App Store Connect API ID dell'emittente (UUID)Vedi nota¹
--apple-team-id <id>ID del team App Store ConnectSì
--apple-id <email>Indirizzo e-mail Apple ID per l'upload della password app-specifica (alternativa all'ID della chiave API)Vedi nota²
--apple-app-specific-password <password>Password app-specifica (xxxx-xxxx-xxxx-xxxx)Vedi nota²
--apple-app-id <id>ID numerico dell'app App Store Connect (ad esempio 1234567890)Vedi nota²
--ios-distribution <mode>Modalità di distribuzione: app_store o (predefinito) ad_hocNo
--output-uploadEnable a time-limited Capgo download link for the build artifactNo (predefinito:) false)
--output-retention <seconds>Quanto tempo mantenere gli output di build (ad esempio 3600s)No (predefinito:) 3600s)
--skip-build-number-bumpSaltare l'aumento automatico del numero di buildNo

Quando salvi le credenziali iOS, il CLI:

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

La struttura del file memorizzato:

{
"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"
}
}
Fermata della 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 del file .keystore o .jksSì (rilevamento)
--keystore-alias <alias>Alias della chiave nel keystoreSì (rilevamento)
--keystore-key-password <password>Password per l'alias della chiaveSì (rilevamento)
--keystore-store-password <password>Password per il keystoreSì (rilevamento)
--play-config <path>Percorso al file JSON del servizio account Play StoreSì (invio)

Salvando le credenziali Android, il CLI:

  1. Legge il keystore e i file JSON del servizio account
  2. Li converte in codifica base64
  3. Salva in ~/.capgo-credentials/credentials.json o .capgo-credentials.json con --local)
  4. Memorizza le password e gli alias come testo piano (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 esegue la costruzione:

Fermata 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 si trova nella directory dei tuoi documenti, fuori dal repository.

  3. Credenziali separate

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

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

Invece di codificare manualmente ogni file di credenziale in base64 (vedi di seguito), lascia build credentials manage generare il file per te:

Finestra 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 limitarlo a uno.

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

Credenziali iOS:

VariabileDescrizioneFormatoRichiesto
BUILD_CERTIFICATE_BASE64Certificato P12/PKCS12 per la firma di codeBase64Sì (rilease)
CAPGO_IOS_PROVISIONING_MAPMappa JSON degli ID pacchetti a dati di profilo di provisioningStringa JSONSì (rilease)
P12_PASSWORDPassword per il certificato P12Testo puroFacoltativo
APPLE_KEY_IDID chiave di App Store Connect per APIString (ad esempio, “ABC1234567”)Vedi nota¹
APPLE_ISSUER_IDID emittente App Store Connect APIStringa UUIDVedi nota¹
APPLE_KEY_CONTENTChiave App Store Connect API (.p8 file content)Base64Vedi nota¹
APP_STORE_CONNECT_TEAM_IDID team Apple DeveloperStringa (ad esempio, “XXXXXXXXXX”)Sì
CAPGO_IOS_DISTRIBUTIONModalità di distribuzione: app_store (di default) o ad_hocStringaNo

Credenziali Android:

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

*Se viene fornita solo una password, verrà utilizzata per entrambi KEYSTORE_KEY_PASSWORD E e KEYSTORE_STORE_PASSWORD.

github/workflow/di costruzione.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:

Fermata 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

Questo approccio è più sicuro perché:

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

Rota regolarmente le tue credenziali:

  1. iOSGenera nuove certificazioni e API chiavi annualmente
  2. AndroidCambia le password del keystore ogni anno
  3. Dopo i cambiamenti della squadraRimuovi quando i membri della squadra 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 ...

“Non sono stati trovati alcun credenziali”

Sezione intitolata ““Nessun credenziale trovato”””

Se il build indica che non sono stati trovati i credenziali:

  1. Controlla se i 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 che il file delle credenziali esista:

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

“Permesso negato” quando si leggono le credenziali

Sezione intitolata “Rifiutato il permesso” quando si leggono le credenziali

Correggi i permessi del file:

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

Verifica di aver specificato la piattaforma corretta:

Fenestra 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 stai utilizzando attualmente le variabili di ambiente, puoi migrare alle 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 nuovo in 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

    Fermata di 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 già le credenziali salvate nel formato vecchio (singolo BUILD_PROVISION_PROFILE_BASE64), esegui:

    Fermata di terminale
    bunx @capgo/cli@latest build credentials migrate --platform ios

    Questo converte il profilo legacy a un CAPGO_IOS_PROVISIONING_MAP e rimuove gli old BUILD_PROVISION_PROFILE_BASE64 e APPLE_PROFILE_NAME context":"Pagina/area: Sito web di marketing Capgo. Ruolo: Etichetta breve UI o elemento di navigazione. Visto in: pagina trust.astro. Chiave di messaggio `e` (E)."

  4. chiavi.

    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 singolo file JSON:

  • Globale (impostazione predefinita): ~/.capgo-credentials/credentials.json — condivisa da tutti i tuoi progetti
  • Locale (con --local): .capgo-credentials.json inserito nella cartella radice del tuo progetto — sovrascrive il file globale per quel progetto

Il file viene creato automaticamente la prima volta che salvi le credenziali. Aggiungi .capgo-credentials.json a tuo .gitignore così le credenziali per progetto non vengono mai committe.

- Problemi comuni e soluzioni

Aiuto?

Continua da Gestione delle credenziali

Continua da Gestione delle credenziali

If sei 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 for the product workflow in Capgo Integrations, per il flusso di lavoro del prodotto in __CAPGO_KEEP_0__ Integrazioni, Integrazione CI/CD GitHub Actions Integration per i dettagli di implementazione in GitHub Azioni di integrazione.