Integrazione con Azure DevOps
Copia un prompt di installazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Integrate Capgo Live Updates with Azure DevOps Pipelines to automatically deploy your app updates whenever you push code changes. This guide covers setting up automated builds, testing, and deployment workflows.
Requisiti
Sezione intitolata “Requisiti”Prima di configurare l'integrazione con Azure DevOps, assicurati di avere:
- Un'organizzazione e un progetto di Azure DevOps
- Un account Capgo con un'app configurata
- Your app’s source code in an Azure Repos Git repository
- Node.js e npm/yarn configurati nel tuo progetto
Configurazione della pipeline di Azure DevOps
Sezione intitolata “Configurazione della pipeline di Azure DevOps”Passo 1: Creazione di variabili della pipeline
Sezione intitolata “Passo 1: Creazione di variabili della pipeline”In primo luogo, configura le variabili necessarie nel tuo progetto di Azure DevOps:
- Naviga al tuo progetto Azure DevOps
- Vai a Pipelines → Biblioteca → Gruppi di variabili
- Crea un nuovo gruppo di variabili denominato
Capgo-Variables - Aggiungi le seguenti variabili:
| Nome variabile | Valore | Sicuro |
|---|---|---|
CAPGO_TOKEN | Il tuo Capgo API token | ✅ Sì |
Configurazione base che distribuisce in produzione con ogni push al ramo principale:
Copia nel portapenneAvanzata
# 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'Section titled “Advanced”
Section titled “Advanced”Distribuzioni di Branch di Feature
Sezione intitolata “Distribuzioni di Branch di Feature”Distribuisci le branch di feature nei canali di test per la revisione e il testing:
# 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 create $CHANNEL_NAME --apikey $(CAPGO_TOKEN) || true npx @capgo/cli bundle upload --apikey $(CAPGO_TOKEN) --channel $CHANNEL_NAME displayName: 'Deploy to Feature Channel'Utilizzo della Crittografia
Sezione intitolata “Utilizzo della Crittografia”Se stai utilizzando Capgo’s feature di crittografia, dovrai memorizzare la tua chiave privata in modo sicuro nel tuo ambiente CI/CD.
Dopo impostazione delle chiavi di crittografia localmente, aggiungi la tua chiave privata alle variabili di Azure DevOps:
# Display your private key content (copy this output)cat .capgo_key_v2Aggiungi questo contenuto come CAPGO_PRIVATE_KEY nelle tue variabili di gruppo di Azure DevOps (segna come segreto), quindi utilizzalo nelle pipeline:
# 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'Configurazione Multi-Canale
Sezione intitolata “Configurazione Multi-Canale”Per informazioni complete sulle impostazioni e la gestione di più canali di distribuzione, consulta la documentazione sui canali.
Configurazione completa con più ambienti e distribuzioni di richiesta di pull:
# 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 create $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'Distribuzione in Ambienti Multipli
Sezione intitolata “Distribuzione in Ambienti Multipli”Per scenari complessi con più ambienti:
# 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'Modello di distribuzione (deploy-steps.yml)
Sezione intitolata “Modello di distribuzione (deploy-steps.yml)”Crea un file di modello riutilizzabile 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 }})'Strategia di distribuzione basata sul ramo
Configura strategie di distribuzione diverse in base ai rami Git:Copia negli appunti
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)'Pratiche di Sicurezza
Sezione intitolata “Pratiche di Sicurezza”Gestione di Variabili Sicure
Sezione intitolata “Gestione di Variabili Sicure”- Utilizza Gruppi di Variabili: Memorizza i dati sensibili nei gruppi di variabili di Azure DevOps
- Segnala come Segreto: Segnala sempre i token e le chiavi API come variabili segrete
- Accesso allo Scopo: Limita l'accesso ai gruppi di variabili a pipeline e utenti specifici
- Rotazione delle Chiavi: Ruota regolarmente i token Capgo e API
Monitoraggio e Notifiche
Sezione intitolata “Monitoraggio e Notifiche”Integrazione con i Team
Sezione intitolata “Integrazione con i Team”Aggiungi notifiche Microsoft Teams al tuo 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'Notifiche via Email
Sezione intitolata “Notifiche via Email”Configura le notifiche via email per lo stato di deploy:
- 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)Risoluzione dei Problemi
Sezione intitolata “Risoluzione dei Problemi”Problemi comuni
Sezione intitolata “Problemi comuni”Il pipeline fallisce con “Capgo CLI non trovato”:
# Ensure global installation- script: | npm install -g @capgo/cli which capgo || echo "Capgo CLI not found in PATH" displayName: 'Install and verify Capgo CLI'Errori di autenticazione:
# 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)Non trovati gli artefatti di costruzione:
# List available artifacts for debugging- script: | ls -la $(System.ArtifactsDirectory) find $(System.ArtifactsDirectory) -name "*.js" -o -name "*.html" displayName: 'Debug artifacts'Percorso di debug
Sezione intitolata “Percorso di debug”Aggiungi passaggi di debug per risolvere i problemi:
- 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'Passaggi successivi
Sezione intitolata “Passaggi successivi”- Scopri di più Canali per gestire diversi ambienti di distribuzione
- Esplora Archiviazione personalizzata per scenari di distribuzione avanzati
- Configura Crittografia per distribuzioni sicure
- Configura Aggiorna il comportamento per personalizzare come vengono applicate le aggiornamenti
Con l'integrazione con Azure DevOps, puoi automatizzare i tuoi Capgo deployment e assicurarti aggiornamenti coerenti e affidabili per i tuoi utenti di app mobile.