Saltar al contenido

__CAPGO_KEEP_1__

Configuración de credenciales de compilación para iOS y Android

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, compartido por todos tus proyectos. Puedes pasar ~/.capgo-credentials/credentials.jsonpara mantenerlas --local por proyecto en en lugar de eso. Cuando ejecutes una compilación, las credenciales guardadas se utilizan automáticamente y se envían de manera segura a __CAPGO_KEEP_0__, luego se eliminan después de que se complete la compilación. .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.

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 listo para CI/CD, .env 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 (solicita si se omite)
--localUtilice el archivo por proyecto .capgo-credentials.json en lugar del archivo global

Preferir comandos de una sola ejecución, scriptables? Utilice los comandos individuales a continuación.

Almacene sus credenciales de compilación localmente para su uso automático:

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

Actualizar credenciales existentes parcialmente sin re-proveer todo:

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

La update El comando utiliza la fusión aditiva para los perfiles de configuración — los nuevos perfiles se fusionan con los existentes. Para reemplazar la totalidad del mapa de configuració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"

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 formato de legado de un solo perfil al nuevo formato de multi-destino:

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

El comando de migración detecta credenciales antiguas BUILD_PROVISION_PROFILE_BASE64 , las convierte a CAPGO_IOS_PROVISIONING_MAP, y elimina las claves de legado. Consulte Migración desde un 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 al archivo de certificado .p12Sí (versión de lanzamiento)
--p12-password <password>Contraseña para el certificado .p12Sí (versión de lanzamiento)
--ios-provisioning-profile <mapping>Provisioning de perfil de configuración (bundleId=path). Repetible para aplicaciones con múltiples objetivos. Si solo hay un perfil y no hay prefijo bundleId, CLI se infiere automáticamente desde el perfil.Sí (versión de lanzamiento)
--apple-key <path>Ruta a App Store Connect API .p8 claveVea la nota¹
--apple-key-id <id>App Store Connect API Identificador de claveVea la nota¹
--apple-issuer-id <id>App Store Connect API Identificador del emisor (UUID)Vea nota¹
--apple-team-id <id>ID del equipo de App Store Connect
--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 compilaciónNo (predeterminado: false)
--output-retention <seconds>¿Cuánto tiempo mantener los resultados de compilación (por ejemplo. 3600s)No (predeterminado: 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 almacena 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í (versión de lanzamiento)
--keystore-alias <alias>Alias de clave en el keystoreSí (versión de lanzamiento)
--keystore-key-password <password>Contraseña para el alias de claveSí (versión de lanzamiento)
--keystore-store-password <password>Contraseña para el keystoreSí (lanzamiento)
--play-config <path>Ruta del archivo JSON de servicio de Play StoreSí (envío)

Cuando guardas credenciales de Android, el CLI:

  1. Lee los archivos del keystore y del servicio de JSON
  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 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 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. 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.

Prácticas recomendadas de seguridad

Sección titulada “Prácticas de Seguridad”
  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 compartir credenciales entre miembros del equipo

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

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

En lugar de codificar en base64 cada archivo de credenciales a mano (ver abajo), deja build credentials manage generar 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 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:

Credenciales 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ónCadena de JSONSí (lanzamiento)
P12_PASSWORDContraseña para el certificado P12Texto planoOpcional
APPLE_KEY_IDClave de App Store Connect API ID de claveCadena de texto (por ejemplo, “ABC1234567”)Vea la nota¹
APPLE_ISSUER_IDClave de App Store Connect API ID de emisorCadena de UUIDVea la nota¹
APPLE_KEY_CONTENTApp Store Connect API clave (.p8 archivo de contenido)Base64Ver nota¹
APP_STORE_CONNECT_TEAM_IDID de equipo de desarrollador de AppleString (por ejemplo, “XXXXXXXXXX”)
CAPGO_IOS_DISTRIBUTIONModo de distribución: app_store (por defecto) o ad_hocStringNo

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 del keystoreTexto planoSí*
PLAY_CONFIG_JSONArchivo JSON de la cuenta de servicios 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 se gestionan por tu plataforma CI/CD
  • No hay archivos de credenciales en ejecutores
  • Rotación y control de acceso fácil
  • Huellas de auditoría para el uso de secretos

Rota tus credenciales regularmente:

  1. iOS: Genera nuevos certificados y API claves anualmente
  2. Android: Cambia las contraseñas de keystore anualmente
  3. Después de cambios en el equipoRotar 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. Compruebe 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 se ha especificado 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á utilizando variables de entorno, puede migrar a credenciales guardadas:

  1. Extrae tus variables de entorno actuales

    Ventana de terminal
    echo $BUILD_CERTIFICATE_BASE64 # Verify they exist
  2. Volver a codificar archivos base64 a sus 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, BUILD_PROVISION_PROFILE_BASE64ejecuta:

    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 en 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 Así, las credenciales por proyecto nunca se comiten.

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 Compilaciones nativas, 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.