Integrazione con Azure DevOps
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Integra le Capgo Aggiornamenti in tempo reale con Azure DevOps Pipelines per distribuire automaticamente le tue aggiornamenti dell'app ogni volta che puoi spingere code modifiche. Questa guida copre la configurazione di costruzioni automatizzate, test e workflow di distribuzione.
Requisiti
Sottosezione 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
- La sorgente code dell'app nel repository Git di Azure Repos
- Node.js e npm/yarn configurati nel tuo progetto
Configurazione della pipeline di Azure DevOps
Sottosezione intitolata “Configurazione della pipeline di Azure DevOps”Step 1: Crea Variabili della Pipeline
Sezione intitolata “Step 1: Crea Variabili della Pipeline”Innanzitutto, configura le variabili necessarie nel tuo progetto Azure DevOps:
- Accedi al tuo progetto Azure DevOps
- Vai a Pipelines → Library → Gruppi di variabili
- Crea un nuovo gruppo di variabili denominato
Capgo-Variables - Aggiungi le seguenti variabili:
| Nome variabile | Valore | Sicuro |
|---|---|---|
CAPGO_TOKEN | Il tuo token Capgo API | ✅ Sì |
Configurazione semplice
Sezione intitolata “Semplice”Configurazione di base che distribuisce in produzione con ogni push al ramo principale:
# 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'Avanzato
Sezione intitolata “Avanzato”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 funzionalità di crittografia, avrai bisogno di memorizzare la tua chiave privata in modo sicuro nel tuo ambiente CI/CD.
Dopo l'installazione 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 nel tuo gruppo di variabili di Azure DevOps (segno 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 dei canali.
Configurazione completa con più ambienti e deployment 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'Deployment Multi-Ambienti
Sezione intitolata “Deployment Multi-Ambienti”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 deployment (deploy-steps.yml)
Sezione intitolata “Modello di deployment (deploy-steps.yml)”Crea un file di template 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 deployment basata sul ramo
Sezione intitolata “Strategia di distribuzione basata sul ramo”Configura strategie di distribuzione diverse in base ai rami 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)'Pratiche di sicurezza migliori
Sezione intitolata “Pratiche di sicurezza migliori”Gestione delle variabili sicure
Sezione intitolata “Gestione delle variabili sicure”- Utilizza Gruppi di variabiliMemorizza dati sensibili nei gruppi di variabili Azure DevOps
- Segnala come segretoSegnala sempre i token e le chiavi API come variabili segrete
- Definisci l'accesso: Limitare l'accesso a gruppi di variabili a pipeline e utenti specifici
- Rotazione delle chiavi: Regolare la rotazione delle tue Capgo API chiavi
Monitoraggio e Notifiche
Sottosezione intitolata “Monitoraggio e Notifiche”Integrazione con i Team
Sottosezione intitolata “Integrazione con i Team”Aggiungi notifiche di 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
Sottosezione intitolata “Notifiche via Email”Configura le notifiche via email per lo stato di deployment:
- 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 flusso di lavoro 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'Debug Pipeline
Sezione intitolata “Pipeline di debug”Aggiungi passaggi di debug per risolvere 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 Canali per gestire diversi ambienti di distribuzione
- Esplora Archiviazione personalizzata per scenari di distribuzione avanzati
- Configura Crittografia per le distribuzioni sicure
- Configura Aggiorna il comportamento per personalizzare come vengono applicate le aggiornamenti
Con l'integrazione con Azure DevOps, puoi automatizzare le tue Capgo distribuzioni e assicurarti aggiornamenti coerenti e affidabili per i tuoi utenti di app mobile.
Continua da Azure DevOps Integration
Sezione intitolata “Continua da Azure DevOps Integration”Se stai utilizzando Azure DevOps Integration per pianificare l'automazione CI/CD, connettilo con Capgo CI/CD per il flusso di lavoro del prodotto in Capgo CI/CD, Capgo Costruzioni native per il flusso di lavoro del prodotto in Capgo Costruzioni native, Capgo Integrazioni per il flusso di lavoro del prodotto in Capgo Integrazioni, Integrazione CI/CD per la dettaglio di implementazione in Integrazione CI/CD, e GitHub Integrazione azioni per la dettaglio di implementazione in GitHub Integrazione azioni.