Ir al contenido

Integración de CI/CD

Al integrar Capgo en tu pipeline de CI/CD, puedes automatizar completamente el proceso de creación y despliegue de actualizaciones de tu aplicación. Al aprovechar los beneficios de Capgo CLI y semantic-release, puedes asegurarte de que los despliegues sean consistentes y fiables, y permitir una iteración rápida.

  • Automatización: Ya no hay pasos manuales ni espacio para errores humanos. Puedes automatizar todo tu proceso de creación, prueba y despliegue desde el principio hasta el final.

  • Consistencia: Cada despliegue sigue el mismo conjunto de pasos, asegurando un proceso predecible y repetible. Esto es especialmente valioso cuando tienes varios miembros del equipo contribuyendo code.

  • Iteraciones más rápidas: Con despliegues automatizados, puede enviar actualizaciones con mayor frecuencia y con confianza. Ya no hay que esperar a los aprobados de QA o aprobaciones de lanzamiento.

La Capgo CLI es la clave para integrar Capgo en tu flujo de trabajo CI/CD. Proporciona comandos para enviar nuevas versiones de paquetes, gestionar canales y más.

El comando más importante para la integración CI/CD es bundle upload:

Ventana de terminal
npx @capgo/cli@latest bundle upload --channel Production --apikey YOUR_API_KEY

Si utiliza cifrado, debe proporcionarlo de una de las siguientes maneras:

Usando la ruta de un archivo de clave privada:

Ventana de terminal
npx @capgo/cli@latest bundle upload --channel Production --apikey YOUR_API_KEY --key-v2 PRIVATE_KEY_PATH

Usando el contenido de la clave privada directamente (recomendado para CI/CD):

Ventana de terminal
npx @capgo/cli@latest bundle upload --channel Production --apikey YOUR_API_KEY --key-data-v2 PRIVATE_KEY_CONTENT

Usando variables de entorno (buena práctica para CI/CD):

Ventana de terminal
npx @capgo/cli@latest bundle upload --channel Production --apikey YOUR_API_KEY --key-data-v2 "$CAPGO_PRIVATE_KEY"

Configuración de variables de entorno para la cifrado

Sección titulada “Configuración de variables de entorno para la cifrado”

Para entornos de CI/CD, se recomienda almacenar tu clave privada como una variable de entorno en lugar de un archivo. Aquí está cómo configurarlo:

  1. Obtén el contenido de tu clave privada:

    Ventana de terminal
    cat .capgo_key_v2 | pbcopy

    Copiar el contenido de la clave a su portapapeles.

  2. Agregarlo a su entorno CI/CD:

    • GitHub Acciones: Agregar CAPGO_PRIVATE_KEY a los secretos de su repositorio
    • GitLab CI: Agregarlo como una variable de máscara en sus ajustes de proyecto
    • CircleCI: Agregarlo como una variable de entorno en sus ajustes de proyecto
    • Jenkins: Agregarlo como un credencial de texto secreto
  3. Usarlo en su pipeline:

    - run: npx @capgo/cli@latest bundle upload --channel=production --apikey=${{ secrets.CAPGO_API_KEY }} --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}"

Nota: La --key-data-v2 bandera permite pasar el contenido de la clave privada directamente como una cadena, lo que la hace perfecta para variables de entorno en pipelines de CI/CD donde no deseas crear archivos temporales.

Este comando sube la compilación web actual al canal especificado. Por lo general, ejecutarás este comando como el último paso en tu pipeline de CI/CD, después de que la compilación web haya completado con éxito.

Mientras que los pasos exactos variarán dependiendo de la herramienta de CI/CD que elijas, el proceso general para integrar Capgo es el siguiente:

  1. Generar una API clave: Inicia sesión en la consola de Capgo y crea una nueva clave API. Esta clave se utilizará para autenticar el CLI en tu entorno de CI/CD. Manténla en secreto y no la comitas a tu repositorio!

  2. Configurar el bundle upload comando: Agregue un paso a su configuración de CI/CD que ejecute el bundle upload comando con los argumentos adecuados:

    upload.yml
    - run: npx @capgo/cli@latest bundle upload --channel=production --apikey=${{ secrets.CAPGO_API_KEY }}
    \n Reemplace Production con el canal al que desea desplegar, ${{ secrets.CAPGO_API_KEY }} con la variable de entorno que contiene su API clave, y agregue --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}" si está utilizando cifrado.

  3. Agregue el upload paso después de su compilación web: Asegúrese de que el upload step comes after your web build has completed successfully. This ensures you’re always deploying your latest code.\n Here’s an example configuration for GitHub Actions:\n

    upload.yml
    name: Deploy to Capgo
    on:
    push:
    branches: [main]
    jobs:
    deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v6
    - uses: actions/setup-node@v6
    with:
    node-version: '24'
    - run: npm ci
    - run: npm run build
    - run: npm install -g @capgo/cli
    - run: npx @capgo/cli@latest bundle upload --channel=production --apikey=${{ secrets.CAPGO_API_KEY }} --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}"

La forma recomendada de manejar la versión con Capgo es configurar la versión en tu capacitor.config.ts archivo importándolo desde package.json:

import pkg from './package.json'
const config: CapacitorConfig = {
// ... other config
plugins: {
CapacitorUpdater: {
version: pkg.version,
}
}
}

Este enfoque te permite:

  1. Usar semantic-release (o cualquier otra herramienta) para actualizar la package.json versión
  2. Construir tu aplicación con la versión actualizada automáticamente incluida
  3. Subir el paquete con la versión correcta

Su flujo de trabajo CI/CD sería como sigue:

- run: npm ci
- run: npx semantic-release # Updates package.json version
- run: npm run build # Builds with new version from capacitor.config
- run: npx @capgo/cli@latest bundle upload --channel=production --apikey=${{ secrets.CAPGO_API_KEY }}

Aquí tienes un ejemplo .releaserc de archivo de configuración para semantic-release:

{
"branches": [
"main",
{
"name": "beta",
"prerelease": true
}
],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
[
"@semantic-release/git",
{
"assets": ["CHANGELOG.md", "package.json"],
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}
]
]
}

Esta configuración hace lo siguiente:

  1. Analiza los mensajes de commit para determinar el número de versión siguiente, siguiendo la especificación de Conventional Commits.
  2. Genera notas de lanzamiento basadas en los commits desde la última versión.
  3. Actualiza el CHANGELOG.md archivo con las nuevas notas de lanzamiento.
  4. Actualiza el package.json número de versión, que será capturado por tu capacitor.config.
  5. Comite los cambios actualizados CHANGELOG.md, package.json, y cualquier otro archivo modificado, de vuelta al repositorio.

Asegúrese de ejecutar semantic-release antes de construir su aplicación para que la versión actualizada de package.json se incluya en su compilación a través del capacitor.config.

Si encuentra problemas con la integración de CI/CD de su Capgo, aquí hay algunas cosas que verificar:

  • API clave: Asegúrese de que su API clave sea válida y tenga los permisos necesarios. Si utiliza una variable de entorno, compruebe que está configurada correctamente.

  • CLI versión: Asegúrese de que esté utilizando la última versión del Capgo CLI. Las versiones antiguas pueden tener problemas de compatibilidad o faltarle ciertas características.

  • Artefactos de compilación: Verifique que su compilación web está generando los archivos de salida esperados. Los Capgo CLI requieren una compilación web válida para crear un paquete.

  • Conectividad de red: Verifique que su entorno de CI/CD tenga acceso a Internet a los servidores Capgo. Problemas con firewalls o proxies pueden interferir con la upload comando.

Si aún está teniendo problemas, póngase en contacto con el soporte Capgo para obtener asistencia. Ellos pueden ayudarlo a depurar cualquier problema con su configuración específica.

Integrar Capgo en su pipeline de CI/CD con una gestión de versiones adecuada puede simplificar significativamente su flujo de trabajo de desarrollo. Al automatizar sus despliegues y versionar a través del enfoque capacitor.config, puede enviar actualizaciones más rápido y con más confianza.

El enfoque recomendado de establecer la versión en su capacitor.config.ts archivo y utilizar semantic-release para actualizar package.json proporciona un proceso de despliegue robusto y confiable que le permite enfocarse en crear características excelentes en lugar de preocuparse por los pasos de liberación manuales.

Para obtener más detalles sobre los comandos y opciones Capgo CLI, consulte el CLI referencia. Y para una exploración más profunda de la configuración de semantic-release, consulte los documentos de semantic-release.

¡Feliz despliegue!