Integración con GitHub Actions
Copia un prompt de configuración con los pasos de instalación y la guía completa en markdown para este plugin.
Integra Capgo Live Updates con GitHub Actions para desplegar automáticamente las actualizaciones de tu app cada vez que hagas push de code cambios. Esta guía cubre la configuración de builds automatizados, testing y workflows de deployment usando la potente plataforma de CI/CD de GitHub.
Requisitos
Sección titulada “Requisitos previos”Antes de configurar la integración con GitHub Actions, asegúrate de tener:
- Un repositorio de GitHub con el source code de tu app
- Una cuenta de Capgo con una app configurada
- Node.js y npm/yarn configurados en tu proyecto
- GitHub Actions habilitado en tu repositorio
Configurar secretos de GitHub
Sección titulada “Configuración de GitHub Secrets”Paso 1: Configurar los Repository Secrets
Sección titulada “Paso 1: Configurar los Secrets del repositorio”Configura los secrets necesarios en tu repositorio de GitHub:
- Ve a tu repositorio de GitHub
- Ve a Configuración → Secrets y variables → Acciones
- Haz clic en Nuevo repository secret y añade lo siguiente:
| Nombre del Secret | Valor |
|---|---|
CAPGO_TOKEN | Tu token de Capgo API |
Despliegue de producción sencillo
Sección titulada “Despliegue de producción sencillo”Empieza con esta configuración básica que despliega a producción con cada push a la rama main:
# Simple GitHub Actions Workflow for Capgo Live Updatesname: Deploy to Capgo
on: push: branches: - main
jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6
- name: Setup Node.js uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- name: Install, test and build run: | npm ci npm run test npm run build
- name: Deploy to Capgo run: | npm install -g @capgo/cli npx @capgo/cli bundle upload --channel production env: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }} # For encrypted uploads, add: --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}"Configuración avanzada multi-canal
Sección titulada “Configuración avanzada de múltiples canales”Deploy de feature branches
Sección titulada “Despliegues en ramas de funciones”Despliega ramas de funciones en canales temporales para pruebas:
# Feature branch deploymentname: Deploy Feature Branch to Capgo
on: push: branches: - 'feature/**'
jobs: deploy-feature: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- run: | npm ci npm run test npm run build
- name: Deploy to feature channel run: | CHANNEL_NAME=$(echo "${{ github.ref_name }}" | sed 's/[^a-zA-Z0-9]/-/g' | tr '[:upper:]' '[:lower:]') npm install -g @capgo/cli npx @capgo/cli channel add $CHANNEL_NAME --apikey ${{ secrets.CAPGO_TOKEN }} || true npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel $CHANNEL_NAMEUso de cifrado
Sección titulada “Uso del cifrado”Si estás usando La función de cifrado de Capgo, deberás almacenar tu clave privada de forma segura en tu entorno de CI/CD.
Después de configurar claves de cifrado localmente, añade tu clave privada a los secrets de GitHub:
# Display your private key content (copy this output)cat .capgo_key_v2Añade este contenido como CAPGO_PRIVATE_KEY en los secrets de tu repositorio de GitHub, y luego úsala en tus workflows:
# Deploy with encryption- name: Deploy to Capgo with Encryption run: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}" --channel productionConfiguración multicanal
Sección titulada “Configuración multicanal”Para obtener información completa sobre cómo configurar y gestionar varios canales de despliegue, consulta la documentación de canales.
Workflow completo con desarrollo, pull requests y despliegues a producción:
# Complete multi-environment workflowname: Deploy to Capgo
on: push: branches: [main, develop] pull_request: branches: [main, develop]
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- run: | npm ci npm run test npm run build
- uses: actions/upload-artifact@v6 with: name: dist path: dist/
deploy-development: if: github.ref == 'refs/heads/develop' needs: build runs-on: ubuntu-latest environment: development steps: - uses: actions/setup-node@v6 with: node-version: '24'
- uses: actions/download-artifact@v4 with: name: dist path: dist/
- run: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel development
deploy-pr: if: github.event_name == 'pull_request' needs: build runs-on: ubuntu-latest steps: - uses: actions/setup-node@v6 with: node-version: '24'
- uses: actions/download-artifact@v4 with: name: dist path: dist/
- name: Deploy to PR channel run: | CHANNEL_NAME="pr-${{ github.event.number }}" npm install -g @capgo/cli npx @capgo/cli channel add $CHANNEL_NAME --apikey ${{ secrets.CAPGO_TOKEN }} || true npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel $CHANNEL_NAME
- name: Comment PR uses: actions/github-script@v7 with: script: | github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: `🚀 This PR has been deployed to Capgo channel: \`pr-${{ github.event.number }}\`\n\nTo test this update in your app, configure it to use this channel. [Learn how to configure channels →](/docs/live-updates/channels/#configuring-the-channel-in-your-app)` })
deploy-production: if: github.ref == 'refs/heads/main' needs: build runs-on: ubuntu-latest environment: production steps: - uses: actions/setup-node@v6 with: node-version: '24'
- uses: actions/download-artifact@v4 with: name: dist path: dist/
- run: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel productionLimpieza de canales de features
Sección titulada “Limpieza de Feature Channels”Elimina automáticamente los feature channels cuando se borran las ramas:
name: Cleanup Feature Channels
on: delete:
jobs: cleanup: runs-on: ubuntu-latest if: github.event.ref_type == 'branch' && startsWith(github.event.ref, 'feature/') steps: - uses: actions/setup-node@v6 with: node-version: '24'
- name: Delete Capgo channel run: | CHANNEL_NAME=$(echo "${{ github.event.ref }}" | sed 's/[^a-zA-Z0-9]/-/g' | tr '[:upper:]' '[:lower:]') npm install -g @capgo/cli npx @capgo/cli channel delete $CHANNEL_NAME --apikey ${{ secrets.CAPGO_TOKEN }} || trueSeguridad y mejores prácticas
Sección titulada “Seguridad y mejores prácticas”Reglas de protección de entornos
Sección titulada “Reglas de protección de entornos”Configura las reglas de protección de entornos en GitHub:
- Ve a Configuración → Environments en tu repositorio
- Crea entornos:
development,staging,production - Para el entorno de producción, añade:
- Revisores requeridos: Añade los miembros del equipo que deben aprobar los despliegues
- Wait timer: Añade un retraso antes del despliegue (opcional)
- Ramas de despliegue: Restringir a
mainsolo una rama
Gestión segura de secretos
Sección titulada “Gestión segura de secretos”Usa secrets específicos del entorno:
# Use different secrets per environmentdeploy-production: environment: production steps: - name: Deploy to Production run: | npx @capgo/cli bundle upload \ --apikey ${{ secrets.CAPGO_PROD_TOKEN }} \ --app ${{ secrets.CAPGO_PROD_APP_ID }} \ --channel productionMonitoreo y notificaciones
Sección titulada “Monitoreo y notificaciones”Integración con Slack
Sección titulada “Slack Integration”Añade notificaciones de Slack a tu workflow:
name: Deploy with Notifications
jobs: deploy: runs-on: ubuntu-latest steps: # ... deployment steps
- name: Notify Slack on Success if: success() uses: 8398a7/action-slack@v3 with: status: success text: '✅ Capgo deployment successful!' fields: repo,message,commit,author,action,eventName,ref,workflow env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Notify Slack on Failure if: failure() uses: 8398a7/action-slack@v3 with: status: failure text: '❌ Capgo deployment failed!' fields: repo,message,commit,author,action,eventName,ref,workflow env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}Integración con Discord
Sección titulada “Discord Integration”Envía notificaciones a Discord:
- name: Discord notification if: always() uses: Ilshidur/action-discord@master with: args: | Capgo deployment ${{ job.status }}! App: ${{ secrets.CAPGO_APP_ID }} Channel: ${{ github.ref_name }} Commit: ${{ github.sha }} env: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}Notificaciones por email
Sección titulada “Notificaciones por email”Configura las notificaciones por email:
- name: Send email notification if: failure() uses: dawidd6/action-send-mail@v3 with: server_address: smtp.gmail.com server_port: 465 username: ${{ secrets.EMAIL_USERNAME }} password: ${{ secrets.EMAIL_PASSWORD }} subject: 'Capgo Deployment Failed - ${{ github.repository }}' to: team@yourcompany.com from: ci-cd@yourcompany.com body: | Deployment failed for ${{ github.repository }} Branch: ${{ github.ref_name }} Commit: ${{ github.sha }} Workflow: ${{ github.workflow }}Solución de problemas
Sección titulada “Solución de problemas”Depurar workflow
Sección titulada “Debug Workflow”Añade pasos de depuración para solucionar problemas:
- name: Debug environment run: | echo "Node version: $(node --version)" echo "NPM version: $(npm --version)" echo "Working directory: $(pwd)" echo "Files in dist/: $(ls -la dist/ || echo 'No dist directory')" echo "Environment variables:" env | grep -E "(GITHUB_|CAPGO_)" | sort
- name: Test Capgo CLI run: | npx @capgo/cli --version npx @capgo/cli app debug --apikey ${{ secrets.CAPGO_TOKEN }} --app ${{ secrets.CAPGO_APP_ID }}Problemas comunes y soluciones
Sección titulada “Problemas comunes y soluciones”El workflow falla con “CAPGO_TOKEN not found”:
- name: Verify secrets run: | if [ -z "${{ secrets.CAPGO_TOKEN }}" ]; then echo "ERROR: CAPGO_TOKEN secret is not set" exit 1 fi echo "CAPGO_TOKEN is set (length: ${#CAPGO_TOKEN})" env: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}No se encuentran los build artifacts:
- name: Debug artifacts run: | echo "Checking for build artifacts..." ls -la dist/ || echo "No dist directory found" find . -name "*.js" -o -name "*.html" | head -10Problemas de conectividad de red:
- name: Test connectivity run: | ping -c 3 api.capgo.io || echo "Ping failed" curl -I https://api.capgo.io/health || echo "Health check failed"Workflows reutilizables
Sección titulada “Reusable Workflows”Crea reusable workflows para mantener la consistencia entre proyectos:
name: Reusable Capgo Deploy
on: workflow_call: inputs: environment: required: true type: string channel: required: true type: string secrets: CAPGO_TOKEN: required: true CAPGO_APP_ID: required: true
jobs: deploy: runs-on: ubuntu-latest environment: ${{ inputs.environment }} steps: - uses: actions/checkout@v6
- name: Setup Node.js uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- name: Install and build run: | npm ci npm run build
- name: Deploy to Capgo run: | npm install -g @capgo/cli npx @capgo/cli bundle upload \ --apikey ${{ secrets.CAPGO_TOKEN }} \ --app ${{ secrets.CAPGO_APP_ID }} \ --channel ${{ inputs.channel }}Usa el reusable workflow:
name: Deploy App
on: push: branches: [main, develop]
jobs: deploy-dev: if: github.ref == 'refs/heads/develop' uses: ./.github/workflows/reusable-capgo-deploy.yml with: environment: development channel: development secrets: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }} CAPGO_APP_ID: ${{ secrets.CAPGO_APP_ID }}
deploy-prod: if: github.ref == 'refs/heads/main' uses: ./.github/workflows/reusable-capgo-deploy.yml with: environment: production channel: production secrets: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }} CAPGO_APP_ID: ${{ secrets.CAPGO_APP_ID }}Próximos pasos
Sección titulada “Próximos pasos”- Aprende sobre Canales para gestionar distintos entornos de despliegue
- Explorar Almacenamiento personalizado para escenarios de despliegue avanzados
- Configurar Cifrado para despliegues seguros
- Configurar Comportamiento de actualización para personalizar cómo se aplican las actualizaciones
Con la integración de GitHub Actions, puedes aprovechar la potente plataforma de CI/CD de GitHub para crear flujos de despliegue avanzados con seguridad, monitoreo y funciones de colaboración integradas para tus Capgo Live Updates.
Continuar con la integración de GitHub Actions
Sección titulada “Continuar con la integración de GitHub Actions”Si estás usando Integración con GitHub Actions para planificar la automatización de CI/CD, conéctala con CI/CD de Capgo para el workflow del producto en Capgo CI/CD, Native Builds de Capgo para el workflow del producto en Capgo Native Builds, Integraciones de Capgo para el workflow del producto en las integraciones de Capgo, Integración CI/CD para el detalle de implementación en la integración de CI/CD, y Integración con GitLab CI/CD para los detalles de implementación en la integración con GitLab CI/CD.