Saltar al contenido principal
Móvil Actualizaciones CI/CD

Integración continua CI/CD

Ci cd continuous integration. Aprende cómo funciona la integración continua CI/CD para apps móviles de JavaScript, desde lo básico de pipelines hasta live updates

Integración continua CI/CD

A las 4:47 PM de un viernes, un desarrollador hace push de una corrección de CSS de una línea. El cambio parece inofensivo, pero la verificación roja de la pipeline dice lo contrario. El equipo puede pasar la noche rastreando un build móvil roto o confiar en la automatización que identifica el fallo mientras el cambio aún está fresco.

Esa es la promesa práctica de la integración continua CI/CD. Los desarrolladores fusionan cambios pequeños con frecuencia, una pipeline automatizada compila y prueba cada cambio, y un artefacto validado avanza hacia los usuarios sin depender de hazañas manuales. En una app de CapacitorJS, el mismo modelo debe tener en cuenta JavaScript, proyectos nativos de iOS y Android, credenciales de firma, flujos de trabajo de las tiendas y el comportamiento del dispositivo.

Tabla de contenidos

Qué significa realmente la integración continua (CI/CD) en la práctica

Integración continua significa que los desarrolladores combinan su trabajo con regularidad en un repositorio Git compartido. Cada push o pull request inicia una validación automatizada, que normalmente incluye instalación de dependencias, linting, pruebas unitarias y un build. El objetivo no es demostrar que la aplicación no tiene bugs, sino encontrar supuestos rotos mientras el cambio relevante todavía es fácil de entender.

Para un proyecto de CapacitorJS, esa validación podría comenzar con npm ci, seguido de pruebas web y un build de producción. Luego, el pipeline puede ejecutar npx cap sync para copiar los assets web y los cambios de plugins nativos en los proyectos de iOS y Android. Un resultado en verde significa que el repositorio produjo un candidato coherente, no solo que la laptop de un desarrollador funcionó por casualidad.

Entrega continua extiende el proceso más allá de la validación. El pipeline produce un artefacto versionado y lo mantiene listo para publicarse en staging o producción. Una persona aún puede aprobar la publicación final, especialmente cuando un equipo necesita revisión de cumplimiento, coordinación con las tiendas o una ventana de lanzamiento controlada.

Despliegue continuo elimina ese paso de aprobación. Cada cambio que supera los checks definidos puede publicarse automáticamente. Ese modelo solo funciona cuando las pruebas, credenciales, controles de rollout, monitoreo y procedimientos de rollback son lo bastante confiables para absorber errores.

El desarrollo móvil complica aún más el problema de la entrega. Una implementación web tiene un solo destino de ejecución, mientras que una app de Capacitor puede requerir un archivo de iOS, un Android App Bundle, certificados, perfiles de aprovisionamiento, metadatos de la tienda y comprobaciones de compatibilidad en dispositivos físicos. Un resumen útil del valor de ingeniería detrás de este flujo de trabajo está disponible en la guía de Capgo sobre los beneficios de la integración continua.

Regla práctica: La CI debe hacer visible un cambio defectuoso rápidamente. La CD debe hacer repetible un cambio correcto.

El pipeline no reemplaza el criterio de ingeniería. Saca el trabajo repetible de las manos de las personas, registra lo que ocurrió y ofrece al equipo un camino coherente desde el commit hasta el release.

Los cinco bloques de construcción de cada pipeline CI/CD

Diseñar un pipeline es más fácil si lo tratas como una secuencia de responsabilidades en lugar de un único archivo YAML. Cada bloque responde a una pregunta diferente.

1. Disparador

El trigger es el timbre. Un git push puede iniciar comprobaciones rápidas en una rama de funcionalidad, mientras que una pull request puede ejecutar la puerta de fusión. Una etiqueta o un evento de release puede iniciar el empaquetado, y un programa puede ejecutar mantenimiento o comprobaciones más amplias de dispositivos.

Elige triggers según el riesgo. Las pull requests necesitan retroalimentación rápida antes de fusionar. Un push a main puede construir artefactos desplegables. Una etiqueta de release debe representar un evento de envío intencional, no una actualización accidental de rama.

2. Build

El build es la cocina donde el código fuente code se convierte en algo que otro sistema puede consumir. En una aplicación CapacitorJS, el trabajo suele instalar las dependencias definidas en el lockfile, ejecutar el build web y ejecutar npx cap sync, e invocar las herramientas de la plataforma.

El carril de iOS puede llamar a xcodebuild a través de un runner de macOS. El carril de Android puede usar Gradle para crear un .aab o .apk. Si el build no se puede reproducir desde un checkout limpio, la pipeline está ocultando una dependencia de la máquina local de alguien.

3. Pruebas

Los tests actúan como un inspector de salud. Los unit tests examinan el comportamiento aislado de JavaScript o TypeScript. Los integration tests verifican límites como almacenamiento, navegación y clientes de API. Las comprobaciones en dispositivo o emulador ejercitan plugins nativos, permisos, deep links y comportamiento del ciclo de vida que las pruebas en navegador no pueden representar por completo.

El análisis de impacto de tests puede mantener esta etapa práctica. Un estudio empírico de 2021 encontró que los commits diarios a menudo solo cambiaban de 3 a 28 archivos, mientras las relaciones de dependencias seguían afectando alrededor 50% o más de los casos de prueba. El estudio informó más de 20% de ahorro de tiempo en su sistema menos efectivo y alrededor de 50% de ahorro mediano en los sistemas examinados al seleccionar pruebas afectadas, como se documenta en el estudio de pruebas continuas.

4. Empaquetado

El empaquetado es el contenedor de envío. La pipeline asigna una versión, recopila metadatos, firma el artefacto y almacena el resultado. iOS podría generar un IPA, mientras que Android comúnmente genera un AAB para Play Console.

5. Despliegue

La implementación es el camión de reparto. Puede subir un build de iOS a TestFlight, enviar un bundle de Android a una pista interna de Play o publicar un bundle web en un canal de Live Update controlado. La automatización de implementación solo ayuda cuando el paquete es confiable y el destino es explícito. Guía de automatización de implementación para proyectos de Capacitor proporciona una referencia útil para conectar estos pasos.

Un diagrama que ilustra los cinco bloques esenciales de un pipeline CI/CD, incluyendo source, build, test, deploy y monitor.

Elimina un bloque y el proceso circundante se debilita. Sin un trigger, los cambios esperan una acción manual. Sin tests, la automatización puede entregar regresiones más rápido. Sin packaging, no hay un artefacto controlado para promover. Sin controles de despliegue, un build exitoso sigue dependiendo de una persona que repita pasos frágiles.

Continuous Delivery vs. Continuous Deployment

La diferencia es un límite de aprobación, pero ese límite cambia el perfil de riesgo de la organización.

Con la continuous delivery, el pipeline realiza build, tests, packaging y prepara un release. Una persona aprueba la acción de producción. Un equipo fintech regulado podría enviar automáticamente cada commit aceptado a staging y luego requerir que un release manager apruebe el envío a App Store o Play Store.

Con despliegue continuo, el pipeline realiza ese release final automáticamente después de que sus políticas se cumplan. Una app de consumo con comprobaciones automatizadas sólidas podría lanzar un bundle JavaScript que pasa a una audiencia limitada primero y luego expandir el rollout cuando las señales de salud sigan siendo aceptables.

Dimensión Entrega Continua Despliegue continuo
Decisión de release Human approval remains before production La automatización toma la decisión de release según la política
Velocidad Rápido, con un punto de control explícito El más rápido cuando todos los prerrequisitos están automatizados
Auditabilidad La aprobación proporciona un registro de revisión claro Logs must capture policy results and release actions
Alcance del impacto Un revisor puede detener una release cuestionable El rollout progresivo y los controles de rollback pesan más
Mejor opción Releases móviles sensibles a cumplimiento o de alto riesgo Equipos con pruebas sólidas, observabilidad y procedimientos de recuperación

Un equipo de CapacitorJS cuyo grupo de cumplimiento exige aprobación en cada release de la tienda nativa suele preferir delivery. El pipeline puede generar el IPA y el AAB, enviarlos al destino de revisión adecuado y esperar la aprobación. Los cambios aprobados de JavaScript y CSS pueden seguir un proceso separado de Live Update si la política de la organización lo permite.

Un equipo de juegos casuales puede elegir deployment para cambios de bajo riesgo en la capa web y delivery para releases nativas. Esa división suele ser más realista que forzar una sola política para todos los artefactos.

El trade-off clave no es la velocidad. Delivery favorece la responsabilidad humana explícita, mientras que deployment favorece la capacidad de un sistema probado para tomar decisiones consistentes. Ningún modelo es automáticamente más seguro. Un clic manual puede detectar contexto que las pruebas pasan por alto, pero también puede convertirse en un cuello de botella no documentado. El deployment automático puede reducir la demora, pero solo si el equipo puede identificar una release defectuosa y restaurar la versión anterior sin improvisar.

Un pipeline de CI/CD real para apps móviles con CapacitorJS

Un workflow de GitHub Actions útil hace visible el mapa de entrega del repositorio. Las versiones exactas de las acciones y la configuración de firma variarán, pero la secuencia debe permanecer comprensible.

Empieza con un repositorio limpio

Un push a main puede desencadenar el workflow. Los primeros jobs comprueban el commit y seleccionan la versión de Node.js requerida. npm ci instala exactamente lo que declara el lockfile, lo que impide que el runner resuelva un árbol de dependencias diferente.

La etapa de validación web puede ejecutar entonces comandos como:

  • Lint: Ejecuta el comando de ESLint del proyecto y falla ante violaciones que deberían bloquear el merge.
  • Pruebas unitarias: Ejecuta Jest en modo no interactivo, recopila los resultados y preserva logs útiles.
  • Build web: Genera el bundle de producción que Capacitor empaquetará.
  • Sincronización de Capacitor: Ejecuta npx cap sync para que los proyectos nativos reciban los assets web y los cambios de plugins.
  • Validación de configuración: Comprueba que la configuración de Capacitor contiene los identificadores de la app, la configuración de plataforma y los valores de entorno esperados.

El archivo de workflow controla la orquestación, mientras que package.json controla los comandos del proyecto. La configuración de Capacitor controla el comportamiento de sincronización. Mantener esas responsabilidades separadas facilita el diagnóstico de fallos. El guía de configuración de integración continua de Capgo cubre el patrón de integración en más detalle.

Compila los targets nativos de forma independiente

iOS requiere un runner de macOS porque Xcode forma parte de la toolchain. El job restaura las dependencias, instala o recupera certificados y perfiles de aprovisionamiento, e invoca xcodebuild o Fastlane. Una configuración que utiliza fastlane match puede gestionar la relación entre el material de firma y el proceso de build, pero el repositorio nunca debe contener certificados o perfiles privados.

Android puede ejecutarse en un runner de Linux o macOS. El job llama a Gradle, a menudo mediante un comando como ./gradlew bundleRelease, y firma el AAB resultante con un keystore referenciado a través de secretos cifrados de CI.

Diagrama de flujo completo que muestra los pasos de la pipeline CI/CD de una app móvil CapacitorJS, desde el desarrollo hasta el despliegue.

Almacena los artifacts con criterio

El workflow debe subir el IPA y el AAB como artefactos con nombre, vinculados al identificador del commit o la release. Los jobs posteriores pueden enviar esos archivos exactos a TestFlight o a un canal interno de Play Console. Esta separación es importante porque reconstruir después de la aprobación puede generar un artefacto diferente al que probaron los revisores.

Una estrategia de matriz puede ejecutar las lanes de iOS y Android de forma concurrente. Eso reduce el tiempo de espera sin mezclar fallos específicos de cada plataforma. También hace que el estado final sea más claro: la build web puede pasar mientras la firma de Android falla, y el workflow debe mostrar esa distinción en lugar de reportar un resultado opaco.

Los secretos deben estar en el almacén de secretos cifrados del proveedor de CI. El job debe recibir solo las credenciales que necesita, durante el tiempo más corto posible. Deben revisarse los logs para detectar la salida accidental de secretos, especialmente cuando las herramientas de línea de comandos imprimen la configuración durante builds fallidas.

Añade Live Updates a tu flujo de CI/CD con Capgo

Un diseñador modifica el texto de onboarding un viernes por la tarde. El cambio afecta a JavaScript y CSS, no a Swift nativo, Kotlin o un plugin de Capacitor. El desarrollador lo commitea, abre un pull request y deja que las comprobaciones habituales validen el web bundle.

Después de npm ci, el web build, las pruebas y npx cap sync pasan, un job de release puede publicar los assets web resultantes en un canal de Capgo seleccionado. El canal puede representar staging, producción, una audiencia beta u otro grupo controlado. Los usuarios reciben el bundle a través del mecanismo de actualización de la app, en lugar de esperar a un nuevo binario de la tienda.

Captura de pantalla de https://capgo.app/docs/img/dashboard.webp

El límite importante es el code nativo. Un cambio en JavaScript, CSS, textos o configuración compatible puede seguir la vía de live-update. Un cambio en plugins nativos, permisos, entitlements o code de la plataforma sigue requiriendo un nuevo binario de iOS o Android y el proceso correspondiente de la tienda.

Usa los channels como controles de release

Un canal de staging permite al equipo validar el bundle con una audiencia controlada antes de la promoción a producción. El version pinning puede mantener una versión de app conocida en un bundle compatible, mientras que los binarios nativos más nuevos usan una vía de release diferente. Esa separación ayuda a evitar enviar code web a un runtime nativo que no lo entiende.

Un rollback debe restaurar un bundle conocido y estable, no obligar a un desarrollador a reconstruir manualmente la build anterior. El valor operativo reside en conectar la publicación, el historial de versiones, el segmentado de audiencia y el estado de entrega al mismo proceso de release.

Publica solo tras la validación

El paso de Capgo CLI debe ubicarse después de la build web normal y las verificaciones. La autenticación debe usar un secreto de CI o una variable de entorno protegida, y la publicación en producción debe restringirse a la rama, tag o política de aprobación que represente una release intencional.

El Guía de integración de Capgo GitHub Actions muestra cómo ese paso de publicación puede integrarse en flujos de trabajo automatizados. El principio general aplica sin importar el proveedor: build una vez, valida ese artefacto, publícalo en un entorno nombrado y conserva suficiente metadatos para identificar exactamente qué recibieron los usuarios.

Para un equipo, esto crea dos carriles conectados. El carrillo de la tienda distribuye capacidades nativas. El carril de live-update distribuye cambios aprobados de la capa web. Mantener esos carriles separados evita el error común de tratar cada cambio de Capacitor como una release completa de tienda o un atajo sin control.

Seguridad e IA en los pipelines de CI/CD actuales

La velocidad del pipeline no compensa controles de release débiles. Un flujo de trabajo móvil maneja credenciales de firma, dependencias de terceros, herramientas de build nativa y code que pueden llegar a los dispositivos de los usuarios. La seguridad debe estar dentro de la misma ruta automatizada que el linting y las pruebas.

Los controles útiles incluyen comprobaciones de dependencias con npm audit o Snyk, detección de secretos con gitleaks, generación de SBOM, artefactos nativos firmados, permisos de CI restringidos y entornos de producción protegidos. Los bundles de Live Update también requieren verificación de firma y controles de canal, para que una aplicación válida pueda rechazar contenido manipulado o incompatible.

Un estudio de 2026 sobre GitHub Actions reveló que cinco medidas de seguridad recomendadas tenían una tasa de implementación media de solo 17,5 % en unos 340.000 repositorios públicos, mientras que una encuesta a 102 desarrolladores identificó la falta de concienciación y la carga operativa esperada como principales obstáculos, según los hallazgos de seguridad de CircleCI. Esta brecha sugiere que los equipos suelen necesitar un plan de adopción más sencillo que otro producto de seguridad.

Distingue la IA útil del puro teatro de pipeline

La IA puede ayudar a resumir logs fallidos, agrupar fallos recurrentes de pruebas inestables, redactar notas de versión y sugerir posibles errores de configuración. Estos usos mantienen al humano responsable de la decisión y facilitan la verificación de la salida.

Las afirmaciones sobre pipelines autoarreglables merecen más cautela. Una encuesta del sector de 2026 informó que el 73 % de las organizaciones no usaba IA en sus pipelines, mientras que 60% de no usuarios citó valor o casos de uso poco claros, 36% mencionaron la desconfianza en los resultados generados, y 33% mencionaron preocupaciones de privacidad, como se describe en el informe de la encuesta de TeamCity.

Práctica Adopción aprox. Madurez
Medidas de seguridad recomendadas para GitHub Actions 17.5% de promedio Brecha de conocimiento y operaciones
IA en pipelines de CI/CD 27% de adopción, según el 73% que reporta no usarlo Experimentación selectiva
Valor claro de la IA para no usuarios El 60% cita casos de uso o valor poco claros Problema de evaluación
Confianza en los resultados generados El 36% cita la falta de confianza La revisión humana sigue siendo importante

Las cifras no deben ser una excusa para retrasar las medidas de seguridad básicas. Empieza con la protección de secretos, visibilidad de dependencias, firma y acceso de mínimo privilegio. Añade IA donde reduzca el esfuerzo de investigación sin permitir que un output de modelo no verificado apruebe un release a producción. Guía de seguridad de pipeline para apps Capacitor puede ayudar a orientar esos controles hacia riesgos específicos de móvil.

Checklist de madurez para tu setup de CI/CD

Un pipeline maduro no es el que tiene más jobs. Es el que ofrece evidencia fiable al equipo en cada límite de release.

Revisa el workflow, no el YAML

Usa estos puntos de control para evaluar el sistema que operas.

  1. Disparadores configurados: Cada pull request y push relevante inicia el workflow esperado. La señal es una ejecución visible asociada al commit, no una intención documentada.
  2. Pruebas automatizadas bloquean los merges: Lint y pruebas unitarias deben pasar antes de hacer merge. En GitHub, una verificación de estado obligatoria debe impedir el merge si el job falla.
  3. Artefactos firmados almacenados: El workflow crea archivos IPA y AAB firmados y los preserva con metadatos de build identificables. Una liberación posterior debe usar el artefacto almacenado en lugar de reconstruirlo desde cero.
  4. Separa los entornos: Staging y producción usan credenciales, canales y reglas de aprobación distintas. Una implementación en staging no debería poder publicar accidentalmente en producción.
  5. Ruta de despliegue automatizado: El pipeline puede enviar un artefacto aprobado a su destino final sin que nadie tenga que copiar archivos entre máquinas.
  6. Listo para rollback: El equipo puede restaurar una versión anterior de la capa nativa o web mediante una acción documentada. Un procedimiento de rollback que solo existe en las notas de un ingeniero no está listo operativamente.
  7. Monitoreo y alertas: El equipo monitoriza la duración de la pipeline, los fallos, los resultados del despliegue y la salud de la aplicación. Un job exitoso no demuestra que los usuarios hayan recibido o tolerado la actualización.

Checklist de madurez en 7 pasos para configurar CI/CD, con mejores prácticas de desarrollo y automatización.

Corrige primero la brecha más dolorosa

No conviertas la lista de verificación en un proyecto de plataforma de un año. Elige la capacidad faltante que bloquea el dolor más frecuente, corrígela en un sprint y vuelve a ejecutar la lista.

Si los desarrolladores esperan builds manuales, automatiza el build. Si los merges fallan porque las pruebas se ejecutan demasiado tarde, haz que las comprobaciones sean obligatorias. Si una mala versión de JavaScript obliga a un envío a la tienda, documenta y protege una ruta de Live Update donde tus políticas de producto y cumplimiento lo permitan. Si nadie sabe qué artefacto llegó a los usuarios, mejora el versionado y los registros de entrega antes de añadir más etapas.

Regla del ingeniero senior: Un pipeline es maduro cuando otro ingeniero puede operarlo de forma segura durante un incidente.

Ese estándar expone los puntos débiles rápidamente. Una marca de verificación verde solo importa cuando el equipo sabe qué validó, a dónde fue el artefacto, cómo lo recibieron los usuarios y cómo recuperar la situación si el lanzamiento se comporta mal.


Capgo conecta los flujos de trabajo CI/CD de CapacitorJS con la entrega controlada de Live Update, con bundles web firmados, canales, historial de versiones y soporte de rollback para cambios elegibles de JavaScript y assets. Visita Capgo para ver cómo puede integrarse junto a tus GitHub Actions, tienda y procesos de lanzamiento existentes.

Live updates para apps Capacitor

Cuando un bug de la capa web está en producción, publica el fix a través de Capgo en lugar de esperar días a la aprobación de la app store. Los usuarios reciben la actualización en segundo plano mientras los cambios nativos siguen el flujo de revisión habitual.

Lo último de nuestro blog

Capgo te da la información clave que necesitas para crear una app móvil realmente profesional.