Saltar al contenido

Gestión de credenciales

Administra tus credenciales de compilación de iOS y Android localmente para realizar compilaciones en la nube de manera conveniente.

Capgo CLI almacena tus credenciales de compilación en tu máquina — nunca en los servidores de Capgo. Por defecto, viven en un archivo global ~/.capgo-credentials/credentials.jsoncompartido por todos tus proyectos. --local Pasar a mantenerlos por proyecto en .capgo-credentials.json en su lugar. Cuando ejecutes una compilación, se utilizan automáticamente las credenciales guardadas y se envían de manera segura a Capgo, luego se eliminan después de que se complete la compilación.

La forma más rápida de trabajar con sus credenciales guardadas es el administrador interactivo. Abre una ventana de terminal (la misma que) build init utiliza) donde puede navegar por lo que se almacena, ver qué está configurado por aplicación y plataforma, exportar un archivo listo para CI/CD, o eliminar las credenciales de una plataforma: .env Ventana de terminal

Copiar a portapapeles
bunx @capgo/cli@latest build credentials manage
OpciónDescripción
--appId <appId>Aplicación para administrar (te pide que elijas si se omite)
--platform <ios|android>Plataforma para administrar (te pide que elijas si se omite)
--localUsa el archivo por proyecto en lugar del archivo global .capgo-credentials.json Usa el archivo por proyecto en lugar del archivo global

¿Preferir comandos scriptables y de una sola ejecución? Usa los comandos individuales debajo.

Almacena tus credenciales de construcción localmente para su uso automático:

Ventana de terminal
bunx @capgo/cli@latest build credentials save --platform <ios|android> [options]

Actualizar parcialmente las credenciales existentes sin tener que proporcionar todo de nuevo:

Ventana de terminal
bunx @capgo/cli@latest build credentials update --platform <ios|android> [options]

El update comando utiliza una fusión aditiva para perfiles de provisión — los nuevos perfiles se fusionan con los existentes. Para reemplazar la totalidad del mapa de provisión en su lugar, agregue --overwrite-ios-provisioning-map.

Ejemplo — agregar un perfil de extensión a las credenciales existentes:

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

La orden de actualización acepta las mismas opciones que save pero todas son opcionales — solo los campos que proporciona se actualizan.

Ver credenciales guardadas actualmente (las contraseñas están ocultas):

Ventana de terminal
bunx @capgo/cli@latest build credentials list
# List credentials for a specific app
bunx @capgo/cli@latest build credentials list --appId com.example.app

Eliminar credenciales guardadas de su máquina local:

Ventana de terminal
# 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

Convierta el formato de legado de un solo perfil al nuevo formato de múltiples objetivos:

Ventana de terminal
bunx @capgo/cli@latest build credentials migrate --platform ios

El comando de migración detecta credenciales antiguas, las convierte a BUILD_PROVISION_PROFILE_BASE64 y elimina las llaves de legado. Consulte CAPGO_IOS_PROVISIONING_MAPMigración desde un perfil único para obtener más detalles. Almacenando credenciales de iOS

Sección titulada “Almacenando credenciales de iOS”

Migrar credenciales
ventana de terminal
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"
OpciónDescripciónRequerido
--certificate <path>Ruta al archivo de certificado .p12Sí (lanzamiento)
--p12-password <password>Contraseña para el certificado .p12Sí (lanzamiento)
--ios-provisioning-profile <mapping>Mapeo de perfil de provisión (bundleId=pathRepetible para aplicaciones multi-destino. Si solo hay un perfil y no hay prefijo de bundleId, CLI se infiere automáticamente desde el perfil.Sí (lanzamiento)
--apple-key <path>Ruta al archivo de clave .p8 de App Store Connect APIVer nota¹
--apple-key-id <id>App Store Connect API ID de claveVea nota¹
--apple-issuer-id <id>App Store Connect API ID de emisor (UUID)Vea nota¹
--apple-team-id <id>ID de equipo de App Store Connect
--apple-id <email>Correo electrónico de Apple ID para subir contraseña de aplicación (alternativa al API clave)Vea nota²
--apple-app-specific-password <password>Contraseña de aplicación (xxxx-xxxx-xxxx-xxxx)Vea nota²
--apple-app-id <id>ID numérico de aplicación de App Store Connect (por ejemplo 1234567890)Vea nota²
--ios-distribution <mode>Modo de distribución: app_store (por defecto) o ad_hocNo
--output-uploadHabilitar un enlace de descarga temporal de Capgo para el artefacto de compilaciónNo (por defecto: false)
--output-retention <seconds>¿Cuánto tiempo mantener los resultados de compilación (por ejemplo, 3600s)No (por defecto: 3600s)
--skip-build-number-bumpSaltar el incremento automático del número de compilaciónNo

Cuando guardes credenciales de iOS, el CLI:

  1. Lee los archivos de certificado y perfil de provisión
  2. Los convierte a codificación base64
  3. Almacena en ellos a ~/.capgo-credentials/credentials.json (o .capgo-credentials.json con --local)
  4. Almacena contraseñas e IDs como texto plano (solo archivos locales)

Estructura del archivo almacenado:

{
"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"
}
}
ventana de terminal
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
OpciónDescripciónRequerido
--keystore <path>Ruta al archivo .keystore o .jksSí (lanzamiento)
--keystore-alias <alias>Alias de clave en el almacén de clavesSí (lanzamiento)
--keystore-key-password <password>Contraseña para el alias de claveSí (lanzamiento)
--keystore-store-password <password>Contraseña para el almacén de clavesSí (lanzamiento)
--play-config <path>Ruta al archivo JSON de servicio de Play StoreSí (envío)

Cuando guardas credenciales de Android, el CLI:

  1. Lee el archivo del keystore y el archivo JSON de la cuenta de servicio
  2. Los convierte a codificación base64
  3. Los guarda en ~/.capgo-credentials/credentials.json o .capgo-credentials.json con --local)
  4. Almacena contraseñas y alias como texto plano (solo archivos locales)

La estructura del archivo almacenado:

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

Una vez que hayas guardado las credenciales, se utilizan automáticamente cuando construyes:

Ventana de terminal
# Credentials automatically loaded from ~/.capgo-credentials/credentials.json
bunx @capgo/cli@latest build request com.example.app --platform ios

También puede sobrescribir las credenciales guardadas utilizando variables de entorno:

Ventana de terminal
# 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

Orden de precedencia:

  1. Variables de entorno (prioridad más alta)
  2. Credenciales guardadas (~/.capgo-credentials/credentials.json, o locales) .capgo-credentials.json)
  3. Sin credenciales (prioridad más baja)

Muestra las credenciales que has guardado:

Ventana de terminal
bunx @capgo/cli@latest build credentials list

Ejemplo de salida:

📋 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. Permisos de archivo

    Ventana de terminal
    # 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. Nunca cometas credenciales

    Ventana de terminal
    # Ignore the per-project credentials file (used with --local)
    echo ".capgo-credentials.json" >> .gitignore

    El archivo global se encuentra en tu directorio de inicio, fuera del repositorio.

  3. Credenciales separadas

    • Usar credenciales diferentes para el desarrollo local vs CI/CD
    • Rotar credenciales con regularidad
    • No compartir credenciales entre miembros del equipo

Para entornos de CI/CD, prefiere variables de entorno sobre credenciales guardadas.

Sección titulada “Exporta un archivo .env listo para usar (recomendado)”

En lugar de codificar cada archivo de credenciales en base64 a mano (ver abajo), deja que build credentials manage generes el archivo para ti:

Ventana de terminal
bunx @capgo/cli@latest build credentials manage
# pick your app → choose "Export to .env"

Escribe un archivo (permisos .env.capgo.<appId>.<platform> ) que contiene cada credencial guardada como una variable de entorno — cada línea es un secreto para agregar a tu proveedor de CI/CD. Por defecto, se combinan ambos plataformas; agrega 0600__CAPGO_KEEP_0__ --platform ios o --platform android para limitarlo a uno.

El CLI lee las siguientes variables de entorno para credenciales:

Credenciales de iOS:

VariableDescripciónFormatoRequerido
BUILD_CERTIFICATE_BASE64Certificado P12/PKCS12 para la firma de codeBase64Sí (lanzamiento)
CAPGO_IOS_PROVISIONING_MAPMapa JSON de IDs de paquetes a datos de perfil de provisiónCadena JSONSí (lanzamiento)
P12_PASSWORDContraseña para el certificado P12Texto planoOpcional
APPLE_KEY_IDID de clave de App Store Connect para APICadena de texto (por ejemplo, “ABC1234567”)Ver nota¹
APPLE_ISSUER_IDID de emisor de App Store Connect APICadena de UUIDVer nota¹
APPLE_KEY_CONTENTContenido de archivo .p8 de App Store Connect APIBase64Ver nota¹
APP_STORE_CONNECT_TEAM_IDID de equipo de Apple DeveloperCadena de texto (por ejemplo, “XXXXXXXXXX”)
CAPGO_IOS_DISTRIBUTIONModo de distribución: app_store (por defecto) o ad_hocCadenaNo

Credenciales de Android:

VariableDescripciónFormatoRequerido
ANDROID_KEYSTORE_FILEArchivo de keystore para firmar APK/AABBase64Sí (lanzamiento)
KEYSTORE_KEY_ALIASAlias de clave dentro del keystoreCadena de textoSí (lanzamiento)
KEYSTORE_KEY_PASSWORDContraseña para el alias de la claveTexto planoSí*
KEYSTORE_STORE_PASSWORDContraseña para el archivo del keystoreTexto planoSí*
PLAY_CONFIG_JSONJSON de cuenta de servicio de Google PlayBase64Sí (envío)

*Si se proporciona solo una contraseña, se utilizará para ambos KEYSTORE_KEY_PASSWORD y KEYSTORE_STORE_PASSWORD.

github/flujos de trabajo/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 }}

Para convertir tus archivos de credenciales a base64 para secretos de CI/CD:

Ventana de terminal
# 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

¿Por qué las variables de entorno son más seguras?

Sección titulada “¿Por qué las variables de entorno son más seguras?”

Esta aproximación es más segura porque:

  • Los secretos están gestionados por tu plataforma CI/CD
  • Sin archivos de credenciales en ejecutores
  • Rotación y control de acceso fáciles
  • Huellas de auditoría para el uso de secretos

Rota tus credenciales regularmente:

  1. iOSGenerar nuevos certificados y API claves anualmente
  2. AndroidCambiar contraseñas de keystore anualmente
  3. Después de cambios en el equipoRotar cuando miembros del equipo dejen

Actualizar credenciales guardadas:

Ventana de terminal
# Re-run save command with new credentials
bunx @capgo/cli@latest build credentials save --platform ios --certificate ./new-cert.p12 ...

Si el build indica que no se encontraron credenciales:

  1. Verifique si las credenciales están guardadas:

    Ventana de terminal
    bunx @capgo/cli@latest build credentials list
  2. Guardar credenciales si faltan:

    Ventana de terminal
    bunx @capgo/cli@latest build credentials save --platform ios ...
  3. Verificar que el archivo de credenciales existe:

    Ventana de terminal
    ls -la ~/.capgo-credentials/credentials.json # global
    ls -la .capgo-credentials.json # local (--local)

Corrige los permisos del archivo:

Ventana de terminal
chmod 600 ~/.capgo-credentials/credentials.json # global
chmod 600 .capgo-credentials.json # local

Verifica que se especifique la plataforma correcta:

Ventana de terminal
# 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

Si las credenciales parecen estar dañadas:

Ventana de terminal
# Clear all credentials
bunx @capgo/cli@latest build credentials clear
# Save again
bunx @capgo/cli@latest build credentials save --platform ios ...

Si actualmente estás utilizando variables de entorno, puedes migrar a credenciales guardadas:

  1. Extrae tus variables de entorno actuales

    Ventana de terminal
    echo $BUILD_CERTIFICATE_BASE64 # Verify they exist
  2. Decodificar archivos base64 de vuelta a archivos originales Si es necesario

    Ventana de terminal
    echo "$BUILD_CERTIFICATE_BASE64" | base64 -d > cert.p12
    echo "$BUILD_PROVISION_PROFILE_BASE64" | base64 -d > profile.mobileprovision
  3. Guardar con el CLI

    Ventana de terminal
    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"

    Si tienes credenciales existentes guardadas en el formato antiguo (singular) BUILD_PROVISION_PROFILE_BASE64run:

    Ventana de terminal
    bunx @capgo/cli@latest build credentials migrate --platform ios

    Esta convierte la legado de perfil único a un CAPGO_IOS_PROVISIONING_MAP y elimina los BUILD_PROVISION_PROFILE_BASE64 y APPLE_PROFILE_NAME contexto: Página/área: Sitio web de marketing de Capgo. Rol: Etiqueta de IU corta o elemento de navegación. Visto en: página trust.astro. Clave de mensaje `y` (Y).

  4. llaves.

    Ventana de terminal
    bunx @capgo/cli@latest build request com.example.app --platform ios
  5. Eliminar variables de entorno (opcional)

    Ventana de terminal
    unset BUILD_CERTIFICATE_BASE64 BUILD_PROVISION_PROFILE_BASE64

Los credenciales se almacenan en un archivo JSON único:

  • Global (por defecto): ~/.capgo-credentials/credentials.json — compartido con todos tus proyectos
  • Local (con --local): .capgo-credentials.json dentro de la carpeta raíz de tu proyecto — sobreescribe el archivo global para ese proyecto

El archivo se crea automáticamente la primera vez que guardas credenciales. Agrega .capgo-credentials.json a tu .gitignore de manera que las credenciales por proyecto nunca se comiten.

Guía de solución de problemas

Guía de solución de problemas

If you are using Gestión de credenciales Para planificar la automatización de CI/CD, conecte con Capgo CI/CD para el flujo de trabajo del producto en Capgo CI/CD, Capgo Compilaciones nativas para el flujo de trabajo del producto en Capgo Compilaciones nativas, Capgo Integraciones para el flujo de trabajo del producto en Capgo Integraciones, Integración de CI/CD para los detalles de implementación en Integración de CI/CD, y GitHub Acciones de integración para los detalles de implementación en GitHub Acciones de Integración.