Saltar al contenido

Gestión de credenciales

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

Capgo CLI almacena sus credenciales de compilación en tu máquina — nunca en los servidores de Capgo. Por defecto, viven en uno global archivo, ~/.capgo-credentials/credentials.jsoncompartido entre todos tus proyectos. Pasa --local para mantenerlos por proyecto en .capgo-credentials.json en su lugar. Cuando ejecutes una compilación, los credenciales guardadas se utilizan automáticamente 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 IU de terminal (la misma que build init usa) donde puede navegar por lo que se almacena, ver qué está configurado por aplicación y plataforma, exportar un archivo .env listo para CI/CD, o eliminar las credenciales de una plataforma:

ventana de terminal
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)
--localUsar el archivo por proyecto .capgo-credentials.json en lugar del archivo global

¿Preferir uno comando a la vez, ejecutable desde la terminal? Utilice los comandos individuales a continuación.

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

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

Actualiza credenciales existentes parcialmente sin tener que proporcionar todo de nuevo:

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

El update command uses merge aditivo para perfiles de provisión — nuevos perfiles se fusionan con los existentes. Para reemplazar la mapa de provisión completo en su lugar, agregue --overwrite-ios-provisioning-map.

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

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

El comando 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 tu 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

Convertir 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 lo viejo BUILD_PROVISION_PROFILE_BASE64 credenciales, las convierte a CAPGO_IOS_PROVISIONING_MAP, y elimina las claves de legado. Consulte Migración desde Perfil Único para obtener más detalles.

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 del archivo de certificado .p12Sí (lanzamiento)
--p12-password <password>Contraseña para el archivo de certificado .p12Sí (lanzamiento)
--ios-provisioning-profile <mapping>Mapa de perfil de provisión (,). Repetible para aplicaciones multi-objetivo. Si solo hay un perfil y no hay prefijo de bundleId, __CAPGO_KEEP_0__ se infiere automáticamente desde el perfil.bundleId=path). Repeatable for multi-target apps. If only one profile and no bundleId prefix, CLI auto-infers from the profile.Ruta de la clave __CAPGO_KEEP_0__ .p8 de App Store Connect
--apple-key <path>Path to App Store Connect API .p8 keyID de clave de App Store Connect __CAPGO_KEEP_0__
--apple-key-id <id>App Store Connect API Key IDID de emisor de App Store Connect __CAPGO_KEEP_0__ (UUID)
--apple-issuer-id <id>App Store Connect API Issuer ID (UUID)ID de equipo de App Store Connect
--apple-team-id <id>Sí (lanzamiento)
--apple-id <email>Correo electrónico de Apple ID para subir contraseña específica de la aplicación (alternativa a la clave API)Ver nota²
--apple-app-specific-password <password>Contraseña específica de la aplicación (xxxx-xxxx-xxxx-xxxx)Ver nota²
--apple-app-id <id>ID numérico de la aplicación de App Store Connect (por ejemplo, 1234567890)Ver nota²
--ios-distribution <mode>Modo de distribución: app_store (predeterminado) o ad_hocNo
--output-uploadHabilitar un enlace de descarga temporal Capgo para el artefacto de la compilaciónNo (predeterminado: 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 guardas credenciales de iOS, el CLI:

  1. Lee los archivos de certificado y perfil de provisión
  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 e IDs como texto plano (solo archivos locales)

La 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 keystoreSí (lanzamiento)
--keystore-key-password <password>Contraseña para el alias de claveSí (lanzamiento)
--keystore-store-password <password>Contraseña para el keystoreSí (lanzamiento)
--play-config <path>Ruta al archivo JSON de servicio de tienda de PlaySí (envío)

Cuando guardas credenciales de Android, el CLI:

  1. Lee los archivos de keystore y JSON de servicio
  2. Los convierte a codificación base64
  3. Los almacena 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 de archivo almacenada:

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

Una vez que hayas guardado 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 puedes sobreescribir 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 local .capgo-credentials.json)
  3. No hay 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 Compartir Credenciales

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

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

  3. Credenciales Separadas

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

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

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

En lugar de codificar cada archivo de credenciales en base64 a mano (consulte abajo), build credentials manage genera el archivo para ti:

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

Escribe un .env.capgo.<appId>.<platform> archivo (permisos 0600) 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 ambas plataformas; agrega --platform ios o --platform android para limitarlo a una.

El CLI lee las siguientes variables de entorno para credenciales:

Credentials de iOS:

VariableDescripciónFormatoRequerido
BUILD_CERTIFICATE_BASE64Certificado P12/PKCS12 para firmar codeBase64Sí (lanzamiento)
CAPGO_IOS_PROVISIONING_MAPMapa JSON de IDs de paquetes a datos de perfil de provisiónJSON stringSí (lanzamiento)
P12_PASSWORDContraseña para el certificado P12Texto planoOpcional
APPLE_KEY_IDApp Store Connect API ID de claveCadena de caracteres (por ejemplo, “ABC1234567”)Vea nota¹
APPLE_ISSUER_IDApp Store Connect API ID de emisorCadena de caracteres UUIDVea nota¹
APPLE_KEY_CONTENTContenido de la clave App Store Connect API (.f8 archivo)Base64Vea la nota¹
APP_STORE_CONNECT_TEAM_IDID del equipo de desarrolladores de AppleCadena (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 claveTexto planoSí*
KEYSTORE_STORE_PASSWORDContraseña para el archivo de keystoreTexto plano
PLAY_CONFIG_JSONArchivo JSON de servicios de Google PlayBase64Sí (envío)

*Si solo se proporciona una contraseña, se utilizará para ambos KEYSTORE_KEY_PASSWORD y 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 }}

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 de CI/CD
  • No archivos de credenciales en ejecutores
  • Rotación y control de acceso fácil
  • Registros de auditoría para el uso de secretos

Rotación de credenciales regular:

  1. iOS: Generar nuevos certificados y API claves anualmente
  2. Android: Cambiar contraseñas de keystore anualmente
  3. Después de cambios en el equipo: Rotar cuando los 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 dice que no se encontraron credenciales:

  1. Verificar 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)

Corregir permisos de archivo:

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

Verifique que la plataforma correcta está especificada:

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á utilizando variables de entorno, puede migrar a credenciales guardadas:

  1. Extraiga sus variables de entorno actuales

    Ventana de terminal
    echo $BUILD_CERTIFICATE_BASE64 # Verify they exist
  2. Volver a codificar archivos base64 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 utilizando 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 (simple, separado por comas), ejecuta: BUILD_PROVISION_PROFILE_BASE64Ventana de terminal

    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 el viejo BUILD_PROVISION_PROFILE_BASE64 y APPLE_PROFILE_NAME llaves.

  4. Prueba la compilación

    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

Las credenciales se almacenan en un archivo JSON único:

  • Global (por defecto): ~/.capgo-credentials/credentials.json — compartido por todos tus proyectos
  • Local (con --local): .capgo-credentials.json en la 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 para que las credenciales por proyecto nunca se comiten.

Sigue adelante desde la gestión de credenciales

Sección titulada “Sigue adelante desde la gestión de credenciales”

Si estás utilizando Gestión de credenciales para planificar la automatización de CI/CD, conecta 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 Construcción Nativa Capgo Integraciones para el flujo de trabajo del producto en Capgo Integraciones Integración CI/CD para el detalle de implementación en Integración CI/CD, y GitHub Integración de Acciones para el detalle de implementación en GitHub Integración de Acciones