Integración con GitLab CI/CD
Integre las Actualizaciones en Vivo de Capgo con GitLab CI/CD para desplegar automáticamente las actualizaciones de su aplicación cada vez que realice cambios en el código. Esta guía cubre la configuración de flujos de trabajo automatizados de construcción, pruebas y despliegue.
Requisitos previos
Section titled “Requisitos previos”Antes de configurar la integración con GitLab CI/CD, asegúrese de tener:
- Una cuenta de GitLab con un repositorio de proyecto
- Una cuenta de Capgo con una aplicación configurada
- Node.js y npm/yarn configurados en su proyecto
Configuración de GitLab CI/CD
Section titled “Configuración de GitLab CI/CD”Paso 1: Configurar variables de entorno
Section titled “Paso 1: Configurar variables de entorno”Primero, configure las variables necesarias en su proyecto de GitLab:
- Navegue a su proyecto de GitLab
- Vaya a Settings → CI/CD → Variables
- Agregue las siguientes variables:
| Nombre de variable | Valor | Protegida | Enmascarada |
|---|---|---|---|
CAPGO_TOKEN | Su token de API de Capgo | ✅ Sí | ✅ Sí |
Simple
Section titled “Simple”Configuración básica que despliega a producción en cada push a la rama principal:
# .gitlab-ci.yml - Configuración simpleimage: node:22
stages: - build - deploy
variables: npm_config_cache: "$CI_PROJECT_DIR/.npm"
build: stage: build script: - npm ci - npm run test - npm run build artifacts: paths: - dist/ expire_in: 1 hour only: - main
deploy_production: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production # Para cargas cifradas, agregar: --key-data-v2 "$CAPGO_PRIVATE_KEY" dependencies: - build only: - mainAvanzado
Section titled “Avanzado”Despliegues de ramas de características
Section titled “Despliegues de ramas de características”Despliegue ramas de características a canales de prueba para revisión y testing:
# Despliegue de rama de característicasdeploy_feature: stage: deploy script: - npm install -g @capgo/cli - CHANNEL_NAME="feature-$(echo $CI_COMMIT_REF_NAME | sed 's/[^a-zA-Z0-9-]/-/g')" - npx @capgo/cli channel create $CHANNEL_NAME --apikey $CAPGO_TOKEN || true - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel $CHANNEL_NAME dependencies: - build only: - /^feature\/.*$/ environment: name: feature/$CI_COMMIT_REF_NAME url: https://your-app.com/channels/$CHANNEL_NAMEUso de cifrado
Section titled “Uso de cifrado”Si está usando la función de cifrado de Capgo, deberá almacenar su clave privada de forma segura en su entorno de CI/CD.
Después de configurar las claves de cifrado localmente, agregue su clave privada a las variables de GitLab:
# Mostrar el contenido de su clave privada (copiar esta salida)cat .capgo_key_v2Agregue este contenido como CAPGO_PRIVATE_KEY en las variables del proyecto de GitLab (marque como protegida y enmascarada), luego úselo en pipelines:
# Desplegar con cifradodeploy_production: script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --key-data-v2 "$CAPGO_PRIVATE_KEY" --channel productionConfiguración multicanal
Section titled “Configuración multicanal”Para obtener información completa sobre la configuración y gestión de múltiples canales de despliegue, consulte la documentación de Canales.
Configuración completa con múltiples entornos y despliegues de merge request:
# .gitlab-ci.yml - Configuración avanzada multicanalimage: node:22
stages: - build - deploy
variables: npm_config_cache: "$CI_PROJECT_DIR/.npm"
# Etapa de construcciónbuild: stage: build script: - npm ci - npm run test - npm run build artifacts: paths: - dist/ expire_in: 24 hours
# Desplegar a canal de desarrollodeploy_development: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel development dependencies: - build only: - develop environment: name: development
# Desplegar merge requests a canales de pruebadeploy_mr: stage: deploy script: - npm install -g @capgo/cli - CHANNEL_NAME="mr-$CI_MERGE_REQUEST_IID" - npx @capgo/cli channel create $CHANNEL_NAME --apikey $CAPGO_TOKEN || true - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel $CHANNEL_NAME dependencies: - build only: - merge_requests environment: name: review/$CI_MERGE_REQUEST_IID url: https://your-app.com/channels/mr-$CI_MERGE_REQUEST_IID on_stop: cleanup_mr
# Limpiar canales de MR cuando se cierra el MRcleanup_mr: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli channel delete mr-$CI_MERGE_REQUEST_IID --apikey $CAPGO_TOKEN || true when: manual environment: name: review/$CI_MERGE_REQUEST_IID action: stop only: - merge_requests
# Desplegar a stagingdeploy_staging: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel staging dependencies: - build only: - develop environment: name: staging
# Desplegar a produccióndeploy_production: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production dependencies: - build only: - main environment: name: productionMulti-entorno con aprobación manual
Section titled “Multi-entorno con aprobación manual”Para despliegues de producción que requieren aprobación manual:
deploy_production: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production dependencies: - build only: - main when: manual environment: name: productionEstrategia de despliegue basada en ramas
Section titled “Estrategia de despliegue basada en ramas”Despliegue diferentes ramas a los canales apropiados automáticamente:
# Despliegue dinámico de canal basado en ramadeploy: stage: deploy script: - npm install -g @capgo/cli - | if [ "$CI_COMMIT_REF_NAME" = "main" ]; then CHANNEL="production" elif [ "$CI_COMMIT_REF_NAME" = "develop" ]; then CHANNEL="staging" else CHANNEL="development" fi - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel $CHANNEL dependencies: - build environment: name: $CHANNELMejores prácticas de seguridad
Section titled “Mejores prácticas de seguridad”Variables protegidas
Section titled “Variables protegidas”- Marcar variables sensibles: Siempre marque los tokens de API como protegidos y enmascarados
- Protección de rama: Use variables protegidas para despliegues de producción
- Control de acceso: Limite el acceso de variables solo a mantenedores
- Rotación regular: Rote los tokens de API regularmente
Configuración segura de pipeline
Section titled “Configuración segura de pipeline”# Usar variables protegidas para produccióndeploy_production: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production only: refs: - main variables: - $CI_COMMIT_REF_PROTECTED == "true"Monitoreo y notificaciones
Section titled “Monitoreo y notificaciones”Integración con Slack
Section titled “Integración con Slack”Agregue notificaciones de Slack a su pipeline:
notify_success: stage: .post image: alpine:latest before_script: - apk add --no-cache curl script: - | curl -X POST -H 'Content-type: application/json' \ --data '{"text":"✅ Despliegue de Capgo exitoso para '"$CI_COMMIT_REF_NAME"'"}' \ $SLACK_WEBHOOK_URL when: on_success
notify_failure: stage: .post image: alpine:latest before_script: - apk add --no-cache curl script: - | curl -X POST -H 'Content-type: application/json' \ --data '{"text":"❌ Despliegue de Capgo fallido para '"$CI_COMMIT_REF_NAME"'"}' \ $SLACK_WEBHOOK_URL when: on_failureNotificaciones por correo electrónico
Section titled “Notificaciones por correo electrónico”Configure notificaciones por correo electrónico en la configuración de su proyecto de GitLab o use la API:
notify_email: stage: .post script: - | curl --request POST \ --header "PRIVATE-TOKEN: $GITLAB_API_TOKEN" \ --form "to=team@yourcompany.com" \ --form "subject=Estado de despliegue de Capgo" \ --form "body=Despliegue de $CI_COMMIT_REF_NAME completado con estado: $CI_JOB_STATUS" \ "https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/emails" when: alwaysSolución de problemas
Section titled “Solución de problemas”Problemas comunes
Section titled “Problemas comunes”El pipeline falla con “Capgo CLI no encontrado”:
# Depurar instalación de CLIdebug_cli: script: - npm install -g @capgo/cli - which capgo || echo "Capgo CLI no encontrado" - npx @capgo/cli --versionErrores de autenticación:
# Verificar configuración de tokendebug_auth: script: - | if [ -z "$CAPGO_TOKEN" ]; then echo "CAPGO_TOKEN no está configurado" exit 1 fi echo "Longitud del token: ${#CAPGO_TOKEN}"Artefactos de construcción no encontrados:
# Listar salidas de construccióndebug_build: script: - ls -la dist/ - find dist/ -type f -name "*.js" -o -name "*.html"Depurar pipeline
Section titled “Depurar pipeline”Agregue información de depuración para solucionar problemas:
debug: stage: build script: - echo "Rama: $CI_COMMIT_REF_NAME" - echo "Commit: $CI_COMMIT_SHA" - echo "Build: $CI_PIPELINE_ID" - env | grep CI_ | sort only: - branchesPróximos pasos
Section titled “Próximos pasos”- Aprenda sobre Canales para gestionar diferentes entornos de despliegue
- Explore Almacenamiento personalizado para escenarios de despliegue avanzados
- Configure Cifrado para despliegues seguros
- Configure Comportamiento de actualización para personalizar cómo se aplican las actualizaciones
Con la integración de GitLab CI/CD, puede automatizar sus despliegues de Capgo y garantizar actualizaciones consistentes y confiables para los usuarios de su aplicación móvil.