Integrazione con Azure DevOps
Copia un prompt di installazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Integra le Capgo Aggiornamenti Live con Azure DevOps Pipelines per distribuire automaticamente gli aggiornamenti del tuo app ogni volta che puoi spingere code modifiche. Questa guida copre la configurazione di costruzioni automatizzate, test e workflow di distribuzione.
Prerequisites
Sottosezione intitolata “Requisiti”Prima di configurare l'integrazione di Azure DevOps, assicurati di avere:
- Un'organizzazione e un progetto Azure DevOps
- Un account Capgo con un'app configurata
- La sorgente code del tuo app in un repository Git Azure Repos
- Node.js e npm/yarn configurati nel tuo progetto
Configurazione della pipeline Azure DevOps
Sezione intitolata “Configurazione della pipeline Azure DevOps”Passo 1: Crea variabili della pipeline
Sezione intitolata “Passo 1: Crea variabili della pipeline”In primo luogo, configura le variabili necessarie nel tuo progetto 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 token Capgo API | ✅ Sì |
Semplice
Sezione intitolata “Semplice”Configurazione 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 rami feature
Sezione intitolata “Distribuzioni di rami feature”Pubblica rami di feature sui 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 add $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 crittografiadovrai memorizzare il tuo chiave privata in modo sicuro nel tuo ambiente CI/CD.
Dopo Configurazione delle chiavi di cifratura 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 in gruppo di variabili 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 sulla configurazione e gestione di più canali di distribuzione, consulta la documentazione sui 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 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'Distribuzione Multi-Ambiente
Sezione intitolata “Distribuzione Multi-Ambiente”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'Template di distribuzione (deploy-steps.yml)
Sezione intitolata “Template di distribuzione (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 distribuzione 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 di Variabili Sicure”- Utilizza Gruppi di Variabili: Memorizza 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 Scope: Limita l'accesso ai gruppi di variabili a pipeline e utenti specifici
- Rinnova le chiavi: Ruota regolarmente i token Capgo e le chiavi API
Monitoraggio e Notifiche
Sezione intitolata “Monitoraggio e Notifiche”Integrazione con i Team
Sezione intitolata “Integrazione dei team”Aggiungi notifiche Microsoft Teams alla tua 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 e-mail
Sezione intitolata “Notifiche via e-mail”Configura le notifiche via e-mail 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)Troubleshooting
Sezione intitolata “Risoluzione dei problemi”Issue comuni
Sezione intitolata “Issue comuni”La 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)Articoli di costruzione non trovati:
# List available artifacts for debugging- script: | ls -la $(System.ArtifactsDirectory) find $(System.ArtifactsDirectory) -name "*.js" -o -name "*.html" displayName: 'Debug artifacts'Pianificatore di debug
Sezione intitolata “Pianificatore 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'Next Steps
Sezione intitolata “Passaggi successivi”- Impara su Canali per gestire ambienti di distribuzione diversi
- Esplora Storage personalizzato per scenari di distribuzione avanzati
- Configura Encryption per distribuzioni sicure
- Configure per personalizzare l'applicazione degli aggiornamenti personalizzare l'applicazione degli aggiornamenti
Con l'integrazione con Azure DevOps, puoi automatizzare i tuoi Capgo deployment e garantire aggiornamenti coerenti e affidabili per i tuoi utenti di app mobili.
Continua dall'integrazione di Azure DevOps
Sezione intitolata “Continua dall'integrazione di Azure DevOps”Se stai utilizzando L'integrazione di Azure DevOps per pianificare l'automazione CI/CD, collegala con Capgo CI/CD per il workflow 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, L'integrazione CI/CD per i dettagli di implementazione nella integrazione CI/CD, e GitHub Azioni di integrazione per i dettagli di implementazione nella GitHub Azioni di integrazione.