Configurando CI/CD para aplicaciones Capacitor puede ser complejo y tiempo consumidor. Aquí está lo que debes saber:
Recomendado para Nuevas Construcciones: Utilice Capgo Build
Ahora recomendamos utilizar Capgo Build con el Capgo CLI para compilaciones nativas Capacitor. Esta guía de Fastlane se mantiene para equipos que mantienen pipelines de acciones existentes GitHub, pero nuevos compilados Android deben utilizar el Capgo CLI para que no deban mantener Fastlane, ejecutores de Gradle, archivos de keystore y scripts de carga ellos mismos.
Requisitos previos
Antes de empezar, necesitarás configurar:
- Una cuenta de GitHub con acceso administrativo
- Tu aplicación ya publicada en Google Play Store con firmas adecuadas
- Clave de firma y archivos de keystore de Android
- Proyecto de Google Cloud Console con API de Play Store habilitado
- Cuenta de servicio con permisos adecuados
- Comprender los flujos de trabajo de GitHub
- Conocimiento de la configuración de Fastlane
- Tiempo para mantener y depurar la pipeline
Capgo Build para CI/CD por Capgo
Saltarse la configuración de Fastlane, el ejecutor de Gradle, el keystore y el script de carga. Capgo Build Ejecuta compilaciones nativas firmadas de Android desde tu pipeline de CI/CD existente:
- Funciona con tu pipelineActivar Capgo Build desde GitHub Actions, GitLab CI, Jenkins o scripts locales después de tu compilación web y
npx cap sync. - Firma desde secretos de CIMantener los keystore de Android, alias de clave, contraseñas y servicio de cuenta de Play Console en tus propios secretos de CI.
- No mantenimiento del ejecutor nativo: Capgo Build proporciona entornos de compilación de Android mantenidos, por lo que no tiene que gestionar SDK imágenes, problemas de caché de Gradle o rutas de Fastlane.
- Artículos y presentación: Descargar artefactos firmados para QA o presentar versiones de lanzamiento a través de la Capgo CLI.
Precios
- Capgo planes comienzan en $12/mes
- Incluye actualizaciones OTA y aproximadamente 15 compilaciones nativas por mes
- Los minutos adicionales de compilación se facturan por minuto a través de créditos
Configurar Capgo Build en CI/CD
Guía de configuración manual
Aquí está lo que necesita hacer:
GitHub Acciones Precios

GitHub Acciones ofrece minutos gratuitos según el tipo de repositorio:
- Repositorios públicos: 2,000 minutos/mes
- Repositorios privados: 2,000 minutos/mes (ejecutores de Linux)
Para proyectos privados, los costos son aproximadamente $0.008/minuto. Un build típico dura 3-5 minutos.
Pasos de configuración manual
- Crear Keystore de Android
- Configurar cuenta de servicio de Google Play
- Configurar Fastlane
- Configurar secretos de GitHub
- Crear flujo de trabajo de GitHub Acciones
1. Crear Keystore de Android
Antes de que puedas firmar y publicar tu aplicación Android, debes crear un archivo de keystore. Este es un proceso de configuración de una sola vez.
Generar Keystore con keytool
Ejecuta este comando en tu terminal:
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
Se te pedirá:
- Contraseña de keystore: Elige una contraseña fuerte (necesitarás esta como
KEYSTORE_STORE_PASSWORD) - Contraseña de clave: Elige una contraseña fuerte (necesitarás esta como
KEYSTORE_KEY_PASSWORD) - Tu nombre, organización, etc.: Rellena tus detalles
Notas importantes
-
Almacena estos valores de manera segura:
- Ubicación del archivo de keystore (por ejemplo,
my-release-key.keystore) - Alias de clave (por ejemplo,
my-key-alias) - necesitarás esto comoKEYSTORE_KEY_ALIAS - Contraseña del archivo de keystore - necesitarás esto como
KEYSTORE_STORE_PASSWORD - Contraseña de clave - necesitarás esto como
KEYSTORE_KEY_PASSWORD
- Ubicación del archivo de keystore (por ejemplo,
-
Realice una copia de seguridad del archivo de keystore: Si lo pierdes, no podrás actualizar tu aplicación publicada
-
Guárdelo en secreto: Nunca comitas el archivo de keystore en git
-
Almacénelo de manera segura: Mantén múltiples copias de seguridad en ubicaciones seguras
Opción alternativa: Utilice un Keystore existente
If ya publicaste ya aplicación, debes usar el mismo keystore que usaste inicialmente. Puedes encontrarlo:
- En tu máquina local donde construyiste la aplicación por primera vez
- En tu Consola de Play → Configuración → Firmado de aplicaciones (si estás utilizando el firmado de aplicaciones de Google Play)
2. Configura el servicio de cuenta de Google Play
Para permitir que las acciones de GitHub suban compilaciones a Google Play, necesitas una cuenta de servicio.
Paso 2.1: Crea proyecto de Google Cloud
- Ve a Consola de Cloud de Google
- Crear un nuevo proyecto o seleccionar uno existente
- Nota el ID del proyecto
Paso 2.2: Habilita el desarrollador de Google Play API
- En la Consola de Cloud de Google, ve a APIs & Servicios → Biblioteca
- Buscar por “Desarrollador de Android de Google Play API”
- Hacer clic Habilitar
Paso 2.3: Crear cuenta de servicio
- Ir a IAM & Administración → Cuentas de servicio
- Hacer clic Crear cuenta de servicio
- Introducir detalles:
- Nombre:
github-actions-uploader - Descripción: “Cuenta de servicio para GitHub Acciones para subir compilaciones”
- Nombre:
- Haga clic Crear y Continuar
- Saltar la asignación de roles por ahora (haga clic Continuar, luego Listo)
Paso 2.4: Crear Clave de Cuenta de Servicio
- Haga clic en la cuenta de servicio recién creada
- Vaya a Claves pestaña
- Haga clic Agregar clave → Crear nueva clave
- Elige JSON formato
- Haga clic Crear
- Un archivo JSON descargará - guárdelo de manera segura, lo necesitarás más tarde
Paso 2.5: Otorgar Acceso en Play Console
- Ir a Consola de Google Play
- Ir a Configuración → API acceso
- Bajo Cuentas de servicio, haz clic Otorgar acceso para tu cuenta de servicio
- En el Permisos de la aplicación pestaña, agregar tu aplicación
- En el Permisos de la cuenta pestaña, otorgar estos permisos:
- Ver información de la aplicación y descargar informes en bloque (solo lectura)
- Crear, editar y eliminar aplicaciones de borrador
- Publicar aplicaciones en pistas de prueba
- Publicar aplicaciones en producción, excluir y otras pistas
- Haga clic Invitar a usuario
- Haga clic Enviar invitación
Paso 2.6: Verificar la clave JSON
El archivo JSON descargado debería verse así:
{
"type": "service_account",
"project_id": "your-project-id",
"private_key_id": "...",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
"client_email": "github-actions-uploader@your-project-id.iam.gserviceaccount.com",
"client_id": "...",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "..."
}
Convertirás esto a base64 en el paso de configuración de secretos GitHub.
3. Configurar Fastlane
Crear un fastlane carpeta en la raíz de tu proyecto y agregar un Fastfile con este contenido:
default_platform(:android)
KEYSTORE_KEY_ALIAS = ENV["KEYSTORE_KEY_ALIAS"]
KEYSTORE_KEY_PASSWORD = ENV["KEYSTORE_KEY_PASSWORD"]
KEYSTORE_STORE_PASSWORD = ENV["KEYSTORE_STORE_PASSWORD"]
platform :android do
desc "Deploy a beta version to the Google Play"
private_lane :verify_changelog_exists do |version_code: |
changelog_path = "android/metadata/en-US/changelogs/#{version_code}.txt"
UI.user_error!("Missing changelog file at #{changelog_path}") unless File.exist?(changelog_path)
UI.message("Changelog exists for version code #{version_code}")
end
private_lane :verify_upload_to_staging do |version_name: |
UI.message "Skipping staging verification step"
end
lane :beta do
keystore_path = "#{Dir.tmpdir}/build_keystore.keystore"
File.write(keystore_path, Base64.decode64(ENV['ANDROID_KEYSTORE_FILE']))
json_key_data = Base64.decode64(ENV['PLAY_CONFIG_JSON'])
# Get previous build number and increment
previous_build_number = google_play_track_version_codes(
package_name: ENV['DEVELOPER_PACKAGE_NAME'],
track: "internal",
json_key_data: json_key_data,
)[0]
current_build_number = previous_build_number + 1
sh("export NEW_BUILD_NUMBER=#{current_build_number}")
# Build the app
gradle(
task: "clean bundleRelease",
project_dir: 'android/',
print_command: false,
properties: {
"android.injected.signing.store.file" => "#{keystore_path}",
"android.injected.signing.store.password" => "#{KEYSTORE_STORE_PASSWORD}",
"android.injected.signing.key.alias" => "#{KEYSTORE_KEY_ALIAS}",
"android.injected.signing.key.password" => "#{KEYSTORE_KEY_PASSWORD}",
'versionCode' => current_build_number
})
# Upload to Play Store
upload_to_play_store(
package_name: ENV['DEVELOPER_PACKAGE_NAME'],
json_key_data: json_key_data,
track: 'internal',
release_status: 'completed',
skip_upload_metadata: true,
skip_upload_changelogs: true,
skip_upload_images: true,
skip_upload_screenshots: true,
)
end
end
4. Configurar GitHub Secrets
Ahora que tienes tu keystore y archivo JSON de servicio, necesitas almacenarlos de manera segura en GitHub.
Paso 4.1: Acceder a GitHub Secrets
- Ir a tu repositorio en GitHub
- Haz clic Ajustes → Secretos y variables → Acciones
- Haz clic Nueva secretos de repositorio
Paso 4.2: Agregar secretos requeridos
Agregar cada uno de estos secretos uno por uno:
PLAY_CONFIG_JSON
- Obtén el archivo JSON de la cuenta de servicio que descargaste en el paso 2.4
- Conviértelo a base64:
Sobre macOS/Linux:
base64 service_account_key.json | pbcopy
En Windows (PowerShell):
[Convert]::ToBase64String([IO.File]::ReadAllBytes("service_account_key.json")) | Set-Clipboard
- Crea un nuevo secreto llamado
PLAY_CONFIG_JSONy pega la cadena base64
__CAPGO_KEEP_0__
- Convierte tu keystore a base64:
En macOS/Linux:
base64 my-release-key.keystore | pbcopy
En Windows (PowerShell):
[Convert]::ToBase64String([IO.File]::ReadAllBytes("my-release-key.keystore")) | Set-Clipboard
- Crea un nuevo secreto llamado
ANDROID_KEYSTORE_FILEy pega la cadena base64
__CAPGO_KEEP_1__
Crea un nuevo secreto con la clave de alias que utilizaste al generar el keystore (por ejemplo, my-key-alias)
Crea un nuevo secreto con la contraseña de la clave del keystore
Crea un nuevo secreto con la clave de contraseña que estableciste al generar el keystore
__CAPGO_KEEP_0__
Crea un nuevo secreto con la contraseña del keystore que estableciste al generar el keystore
__CAPGO_KEEP_0__
Crea un nuevo secreto con el nombre de paquete de tu aplicación (por ejemplo, com.example.app)
Puedes encontrar tu nombre de paquete en android/app/build.gradle debajo applicationId
Paso 4.3: Verificar todos los secretos
Asegúrate de tener configurados estos 6 secretos:
- ✅ CONFIGURACIÓN DE JUEGO JSON
- ✅ ARCHIVO DE KEYS DE ANDROID
- ✅ ALINEACIÓN DE KEYS DEL KEYSSTORE
- ✅ CONTRASEÑA DE LA LLAVE DEL ALMACÉN
- ✅ CONTRASEÑA DEL ALMACÉN DE LA LLAVE
- ✅ NOMBRE DEL PAQUETE DEL DESARROLLADOR
5. Crea GitHub flujo de trabajo de Acciones
Crear .github/workflows/build-upload-android.yml:
name: Build and Deploy Android App
on:
push:
tags:
- '*'
jobs:
build_android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
cache: npm
- name: Install dependencies
run: npm ci
- name: Cache Gradle
uses: actions/cache@v5
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Build app
run: npm run build
- name: Sync Capacitor
run: npx cap sync
- name: Setup Java
uses: actions/setup-node@v5
with:
distribution: 'zulu'
java-version: '17'
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.0'
bundler-cache: true
- name: Run Fastlane
uses: maierj/fastlane-action@v3.1.0
env:
PLAY_CONFIG_JSON: ${{ secrets.PLAY_CONFIG_JSON }}
ANDROID_KEYSTORE_FILE: ${{ secrets.ANDROID_KEYSTORE_FILE }}
DEVELOPER_PACKAGE_NAME: ${{ secrets.DEVELOPER_PACKAGE_NAME }}
KEYSTORE_KEY_ALIAS: ${{ secrets.KEYSTORE_KEY_ALIAS }}
KEYSTORE_KEY_PASSWORD: ${{ secrets.KEYSTORE_KEY_PASSWORD }}
KEYSTORE_STORE_PASSWORD: ${{ secrets.KEYSTORE_STORE_PASSWORD }}
with:
lane: android beta
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: android-release
path: ./android/app/build/outputs/bundle/release/app-release.aab
retention-days: 10
Cómo funciona
- Crear una etiqueta Git para desencadenar el flujo de trabajo
- GitHub Acciones compila tu aplicación
- Fastlane la sube a Google Play beta canal
- Tus aplicaciones se actualizan automáticamente
Tiempo de compilación y costos
- Tiempo de compilación: 3-5 minutos
- Costo para repositorios privados: ~$0.04 por construcción
- Gratis para proyectos de código abierto
Artículos relacionados
Guías de configuración de CI/CD
- Construcción automática de iOS con Capacitor y GitHub - Configuración completa de CI/CD de iOS
- Construcción y liberación automáticas con GitHub - Tutorial completo de pipeline de CI/CD
- Gestión de construcciones de Dev y Prod con GitHub - Gestión de entornos
Plataformas de CI/CD alternativas
- Construcción con GitLab CI - Alternativa de GitLab para Android
- Construye con CodeMagic - Guía de configuración de CodeMagic
Actualizaciones en vivo y despliegue
- Capgo Documentación de Actualizaciones en vivo - Agrega actualizaciones OTA a tu aplicación
- Integración CI/CD con Capgo - Integra actualizaciones en vivo en tu pipeline
Recursos
Sigue adelante desde la compilación automática de Android de Capacitor con GitHub acciones
Si estás utilizando Automático Capacitor construcción de Android con GitHub acciones 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 Construcciones nativas para el flujo de trabajo del producto en Capgo Construcciones nativas, Capgo Integraciones para el flujo de trabajo del producto en Capgo Integraciones, Integración de CI/CD para el detalle de implementación en Integración de CI/CD, y GitHub Integración de acciones For el detalle de implementación en GitHub Acciones de Integración.