Integración de Azure DevOps
Copia un prompt de configuración con los pasos de instalación y la guía de markdown completa para este complemento.
Integra Capgo actualizaciones en vivo con Azure DevOps Pipelines para que se desplieguen automáticamente las actualizaciones de tu aplicación cada vez que envíes code cambios. Este guía cubre la configuración de flujos de trabajo de compilación, pruebas y despliegue automatizados.
Requisitos previos
Sección titulada “Requisitos previos”Antes de configurar la integración con Azure DevOps, asegúrate de tener:
- Una organización y proyecto de Azure DevOps
- Una Capgo cuenta con una aplicación configurada
- Your app’s source code in an Azure Repos Git repository
- Node.js y npm/yarn configurados en tu proyecto
Configuración de la Pipeline de Azure DevOps
Sección titulada “Configuración de la Pipeline de Azure DevOps”Paso 1: Crea variables de la pipeline
Sección titulada “Paso 1: Crea variables de la pipeline”Primero, configura las variables necesarias en tu proyecto de Azure DevOps:
- Navega a tu proyecto de Azure DevOps
- Ve a Flujos de trabajo → Biblioteca → Grupos de variables
- Crea un nuevo grupo de variables con el nombre
Capgo-Variables - Agrega las siguientes variables:
| Nombre de variable | Valor | Seguro |
|---|---|---|
CAPGO_TOKEN | Tu Capgo API token | ✅ Sí |
Simple
Copiar a portapapelesConfiguración básica que despliega a producción en cada empuje a la rama principal:
# Simple Azure DevOps Pipeline for Capgo Live Updatestrigger: branches: include: - main
variables: - group: Capgo-Variables
jobs: - job: BuildAndDeploy displayName: 'Build and Deploy to Capgo' pool: vmImage: 'ubuntu-latest'
steps: - task: NodeTool@0 displayName: 'Setup Node.js' inputs: versionSpec: '22.x'
- script: | npm ci npm run test npm run build displayName: 'Install, test and build'
- script: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey $(CAPGO_TOKEN) --channel production displayName: 'Deploy to Capgo'Advanced
Sección titulada “Avanzado”Implementaciones de rama de características
Sección titulada “Implementaciones de rama de características”Implementar ramas de características en canales de prueba para revisión y pruebas:
# Feature branch deploymenttrigger: branches: include: - feature/*
variables: - group: Capgo-Variables
jobs: - job: DeployFeature displayName: 'Deploy Feature Branch' pool: vmImage: 'ubuntu-latest' condition: startsWith(variables['Build.SourceBranch'], 'refs/heads/feature/')
steps: - task: NodeTool@0 inputs: versionSpec: '22.x'
- script: | npm ci npm run test npm run build displayName: 'Install, test and build'
- script: | BRANCH_NAME=$(echo "$(Build.SourceBranchName)" | sed 's/[^a-zA-Z0-9-]/-/g') CHANNEL_NAME="feature-$BRANCH_NAME" npm install -g @capgo/cli npx @capgo/cli channel add $CHANNEL_NAME --apikey $(CAPGO_TOKEN) || true npx @capgo/cli bundle upload --apikey $(CAPGO_TOKEN) --channel $CHANNEL_NAME displayName: 'Deploy to Feature Channel'Usando cifrado
Sección titulada “Usando cifrado”Si estás utilizando Capgo's característica de cifradodebes almacenar tu clave privada de manera segura en tu entorno de CI/CD.
Después de configurar las claves de cifrado localmente, agrega tu clave privada a las variables de Azure DevOps:
# Display your private key content (copy this output)cat .capgo_key_v2Agrega este contenido como CAPGO_PRIVATE_KEY en tu grupo de variables de Azure DevOps (marcado como secreto), luego úsalo en las pipelines:
# Deploy with encryption- script: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey $(CAPGO_TOKEN) --key-data-v2 "$(CAPGO_PRIVATE_KEY)" --channel production displayName: 'Deploy to Capgo with Encryption'Configuración de múltiples canales
Configuración de múltiples canalesPara obtener información completa sobre la configuración y gestión de múltiples canales de despliegue, consulte el documentación de canales.
Configuración completa con múltiples entornos y despliegues de solicitudes de extracción:
# Advanced Azure DevOps Pipeline with Multiple Channelstrigger: branches: include: - main - develop
pr: branches: include: - main - develop
variables: - group: Capgo-Variables
stages: # Build stage - stage: Build jobs: - job: BuildApp pool: vmImage: 'ubuntu-latest' steps: - task: NodeTool@0 inputs: versionSpec: '22.x'
- script: | npm ci npm run test npm run build displayName: 'Install, test and build'
- task: PublishBuildArtifacts@1 inputs: pathToPublish: 'dist' artifactName: 'app-build'
# Deploy to development - stage: DeployDev condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/develop')) jobs: - deployment: DeployDevelopment environment: development pool: vmImage: 'ubuntu-latest' strategy: runOnce: deploy: steps: - task: NodeTool@0 inputs: versionSpec: '22.x'
- task: DownloadBuildArtifacts@0 inputs: artifactName: 'app-build' downloadPath: '$(Pipeline.Workspace)'
- script: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey $(CAPGO_TOKEN) --channel development --path $(Pipeline.Workspace)/app-build displayName: 'Deploy to Development'
# Deploy PR to test channel - stage: DeployPR condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest')) jobs: - job: DeployPRChannel pool: vmImage: 'ubuntu-latest' steps: - task: NodeTool@0 inputs: versionSpec: '22.x'
- task: DownloadBuildArtifacts@0 inputs: artifactName: 'app-build' downloadPath: '$(Pipeline.Workspace)'
- script: | CHANNEL_NAME="pr-$(System.PullRequest.PullRequestNumber)" npm install -g @capgo/cli npx @capgo/cli channel add $CHANNEL_NAME --apikey $(CAPGO_TOKEN) || true npx @capgo/cli bundle upload --apikey $(CAPGO_TOKEN) --channel $CHANNEL_NAME --path $(Pipeline.Workspace)/app-build displayName: 'Deploy to PR Channel'
# Deploy to production - stage: DeployProd condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main')) jobs: - deployment: DeployProduction environment: production pool: vmImage: 'ubuntu-latest' strategy: runOnce: deploy: steps: - task: NodeTool@0 inputs: versionSpec: '22.x'
- task: DownloadBuildArtifacts@0 inputs: artifactName: 'app-build' downloadPath: '$(Pipeline.Workspace)'
- script: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey $(CAPGO_TOKEN) --channel production --path $(Pipeline.Workspace)/app-build displayName: 'Deploy to Production'Despliegue en Múltiples Entornos
Sección titulada “Despliegue en Múltiples Entornos”Para escenarios complejos con múltiples entornos:
# Extended pipeline with multiple environmentsparameters: - name: deployEnvironment displayName: 'Deploy Environment' type: string default: 'staging' values: - staging - production
variables: - group: Capgo-Variables - name: channelName ${{ if eq(parameters.deployEnvironment, 'production') }}: value: 'production' ${{ else }}: value: 'staging'
stages: # Build stage - stage: Build jobs: - job: BuildApp pool: vmImage: 'ubuntu-latest' steps: - task: NodeTool@0 inputs: versionSpec: '22.x'
- script: | npm ci npm run test npm run build displayName: 'Install, test and build'
- task: PublishBuildArtifacts@1 inputs: pathToPublish: 'dist' artifactName: 'app-build'
- stage: DeployStaging displayName: 'Deploy to Staging' dependsOn: Build condition: and(succeeded(), eq('${{ parameters.deployEnvironment }}', 'staging')) jobs: - deployment: DeployStaging displayName: 'Deploy to Staging Channel' pool: vmImage: 'ubuntu-latest' environment: 'staging' strategy: runOnce: deploy: steps: - template: deploy-steps.yml parameters: channel: 'staging'
- stage: DeployProduction displayName: 'Deploy to Production' dependsOn: Build condition: and(succeeded(), eq('${{ parameters.deployEnvironment }}', 'production')) jobs: - deployment: DeployProduction displayName: 'Deploy to Production Channel' pool: vmImage: 'ubuntu-latest' environment: 'production' strategy: runOnce: deploy: steps: - template: deploy-steps.yml parameters: channel: 'production'Plantilla de Despliegue (deploy-steps.yml)
Sección titulada “Plantilla de Despliegue (deploy-steps.yml)”Crear un archivo de plantilla reutilizable deploy-steps.yml:
parameters: - name: channel type: string
steps: - task: NodeTool@0 displayName: 'Install Node.js' inputs: versionSpec: '22.x'
- task: DownloadBuildArtifacts@0 displayName: 'Download build artifacts' inputs: artifactName: 'app-build' downloadPath: '$(System.ArtifactsDirectory)'
- script: | npm install -g @capgo/cli displayName: 'Install Capgo CLI'
- script: | npx @capgo/cli bundle upload \ --apikey $(CAPGO_TOKEN) \ --channel ${{ parameters.channel }} \ --path $(System.ArtifactsDirectory)/app-build displayName: 'Upload to Capgo (${{ parameters.channel }})'Estrategia de Despliegue Basada en Ramas
Sección titulada “Estrategia de Despliegue Basada en Ramas”Configurar diferentes estrategias de despliegue según las ramas de Git:
trigger: branches: include: - main - develop - feature/*
variables: - group: Capgo-Variables - name: targetChannel ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/main') }}: value: 'production' ${{ elseif eq(variables['Build.SourceBranch'], 'refs/heads/develop') }}: value: 'staging' ${{ else }}: value: 'development'
stages: - stage: Build jobs: - job: BuildApp pool: vmImage: 'ubuntu-latest' steps: - task: NodeTool@0 inputs: versionSpec: '22.x'
- script: | npm ci npm run test npm run build displayName: 'Install, test and build'
- task: PublishBuildArtifacts@1 inputs: pathToPublish: 'dist' artifactName: 'app-build'
- stage: Deploy displayName: 'Deploy to $(targetChannel)' dependsOn: Build condition: succeeded() jobs: - deployment: DeployJob displayName: 'Deploy to $(targetChannel) Channel' pool: vmImage: 'ubuntu-latest' environment: '$(targetChannel)' strategy: runOnce: deploy: steps: - template: deploy-steps.yml parameters: channel: '$(targetChannel)'Mejores prácticas de seguridad
Sección titulada “Mejores prácticas de seguridad”Gestión de variables seguras
Sección titulada “Gestión de variables seguras”- Usar grupos de variables: Almacenar datos sensibles en grupos de variables de Azure DevOps
- Marcar como secreto: Siempre marcar tokens y claves API como variables secretas
- Ámbito de accesoLimitar acceso a grupos de variables a pipelines y usuarios específicos
- Rotar claves: Rotar regularmente tus Capgo API tokens
Monitoreo y Notificaciones
Sección titulada “Monitoreo y Notificaciones”Integración de Equipos
Sección titulada “Integración de Equipos”Agregar notificaciones de Microsoft Teams a tu pipeline:
- task: ms-teams-deploy-card@1.4.1 displayName: 'Notify Teams on Success' condition: succeeded() inputs: webhookUri: '$(TEAMS_WEBHOOK_URL)' title: 'Capgo Deployment Successful' text: 'App deployed to $(targetChannel) channel' themeColor: '00FF00'
- task: ms-teams-deploy-card@1.4.1 displayName: 'Notify Teams on Failure' condition: failed() inputs: webhookUri: '$(TEAMS_WEBHOOK_URL)' title: 'Capgo Deployment Failed' text: 'Deployment to $(targetChannel) failed' themeColor: 'FF0000'Notificaciones por Correo
Sección titulada “Notificaciones por Correo”Configurar notificaciones por correo para el estado de despliegue:
- task: EmailReport@1 displayName: 'Send Email Report' condition: always() inputs: sendMailConditionConfig: 'Always' subject: 'Capgo Deployment Report - $(Build.BuildNumber)' to: 'team@yourcompany.com' body: | Deployment Status: $(Agent.JobStatus) Channel: $(targetChannel) Build: $(Build.BuildNumber) Commit: $(Build.SourceVersion)Solución de Problemas
Sección titulada “Solución de problemas”Problemas comunes
Sección titulada “Problemas comunes”La canalización falla con “Capgo CLI no encontrado”:
# Ensure global installation- script: | npm install -g @capgo/cli which capgo || echo "Capgo CLI not found in PATH" displayName: 'Install and verify Capgo CLI'Errores de autenticación:
# Verify token is correctly set- script: | echo "Token length: ${#CAPGO_TOKEN}" if [ -z "$CAPGO_TOKEN" ]; then echo "CAPGO_TOKEN is not set" exit 1 fi displayName: 'Verify Capgo token' env: CAPGO_TOKEN: $(CAPGO_TOKEN)No se encontraron artefactos de compilación:
# List available artifacts for debugging- script: | ls -la $(System.ArtifactsDirectory) find $(System.ArtifactsDirectory) -name "*.js" -o -name "*.html" displayName: 'Debug artifacts'Pipoteca de depuración
Sección titulada “Pipoteca de depuración”Agregar pasos de depuración para solucionar problemas:
- script: | echo "Build.SourceBranch: $(Build.SourceBranch)" echo "Build.BuildNumber: $(Build.BuildNumber)" echo "Target Channel: $(targetChannel)" displayName: 'Debug Pipeline Variables'
- script: | npx @capgo/cli app debug --apikey $(CAPGO_TOKEN) displayName: 'Debug Capgo App Status'Pasos siguientes
Sección titulada “Pasos siguientes”- Aprende sobre Canales para administrar diferentes entornos de despliegue
- Explora Almacenamiento personalizado para escenarios de despliegue avanzados
- Configura Cifrado para despliegues seguros
- Configuración Comportamiento de actualización para personalizar cómo se aplican las actualizaciones
Con Azure DevOps integrado, puede automatizar sus Capgo despliegues y garantizar actualizaciones consistentes y fiables para los usuarios de su aplicación móvil.
Sigue adelante desde la integración de Azure DevOps
Sección titulada “Sigue adelante desde la integración de Azure DevOps”Si está utilizando Integración de Azure DevOps para planificar la automatización de CI/CD, conecte con Capgo CI/CD para el flujo de trabajo del producto en Capgo CI/CD, Capgo Compilaciones nativas para el flujo de trabajo del producto en Capgo Nativas Capgo Integraciones para el flujo de trabajo del producto en Capgo Integraciones Integración CI/CD para el detalle de implementación en Integración CI/CD, y GitHub Acciones de Integración para el detalle de implementación en GitHub Acciones de Integración.