Integrazione con Azure DevOps
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Integra le Aggiornamenti Live di Capgo 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 build automatizzati, test e workflow di distribuzione.
Prerequisiti
Sezione intitolata “Prerequisiti”Prima di configurare l'integrazione di Azure DevOps, assicurati di avere:
- Un'organizzazione e un progetto di Azure DevOps
- Un account Capgo con un'app configurata
- La code di origine del tuo app in un 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”Passo 1: Creazione di variabili della pipeline
Sottosezione intitolata “Passo 1: Creazione di variabili della pipeline”In primo luogo, configura le variabili necessarie nel tuo progetto di Azure DevOps:
- Naviga nel tuo progetto di Azure DevOps
- Vai a Pipelines → Libreria → Gruppi di variabili
- Crea un nuovo gruppo di variabili denominato
Capgo-Variables - Aggiungi le seguenti variabili:
| Nome della variabile | Valore | Sicuro |
|---|---|---|
CAPGO_TOKEN | Il tuo token Capgo API | ✅ Sì |
Semplice
Sezione intitolata “Semplice”Configurazione di base che distribuisce in produzione con ogni push sul 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”Deployamenti di ramo di feature
Sezione intitolata “Deployamenti di ramo di feature”Distribuisce i rami 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
Sottosezione intitolata “Utilizzo della crittografia”Se stai utilizzando Capgo's funzionalità di crittografia, dovrai memorizzare la tua chiave privata in modo sicuro nell'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 in il tuo gruppo di variabili 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
Sottosezione intitolata “Configurazione Multi-Canale”Per informazioni complete sulla configurazione e gestione di più canali di distribuzione, vedere il 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 più ambienti
Sezione intitolata “Distribuzione in più 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 distribuzione (deploy-steps.yml)
Sezione intitolata “Modello 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 delle variabili sicure”- Utilizza Gruppi di variabiliUtilizza Gruppi di variabili
- Memorizza i dati sensibili nei gruppi di variabili di Azure DevOps: Segnala sempre i token e le chiavi API come variabili segrete
- Accesso allo Scope: Limita l'accesso al gruppo di variabili a pipeline e utenti specifici
- Rotazione delle Chiavi: Ruota regolarmente i tuoi token Capgo e API
Monitoraggio e Notifiche
Sezione intitolata “Monitoraggio e Notifiche”Integrazione con i Team
Sezione 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
Sezione intitolata “Notifiche via Email”Configura le notifiche via email per lo stato di distribuzione:
- 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)Risolvere i problemi
Sezione intitolata “Risolvere i 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)Il file degli artefatti non trovato:
# List available artifacts for debugging- script: | ls -la $(System.ArtifactsDirectory) find $(System.ArtifactsDirectory) -name "*.js" -o -name "*.html" displayName: 'Debug artifacts'Pipeline di debug
Sottosezione 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'- Sottosezione intitolata “Passaggi successivi” Scopri Canali
- Funzione di canali di rilascio di Capgo. Area: pagina di marketing delle soluzioni di Capgo. Ruolo: Etichetta di navigazione o elemento UI breve. Visualizzato in: pagina solutions/white-label.astro. Chiave di messaggio `solutions_white_label_visual_cell2_value` (Valore della cella visiva del white label delle soluzioni). per gestire ambienti di distribuzione diversi. Explore, Archiviazione personalizzata per scenari di distribuzione avanzati
- Configura Crittografia per distribuzioni sicure
- Configura Comportamento dell'aggiornamento per personalizzare come gli aggiornamenti vengono applicati
Con l'integrazione di Azure DevOps, puoi automatizzare i tuoi Capgo distribuzioni e assicurarti aggiornamenti coerenti e affidabili per gli utenti del tuo app mobile.
Continua dall'integrazione di Azure DevOps
Sottotitolo “Continua dall'integrazione di Azure DevOps”Se stai utilizzando L'integrazione di Azure DevOps per pianificare l'automazione CI/CD, connettilo con Capgo automazione CI/CD per il flusso di lavoro del prodotto in Capgo automazione CI/CD, Capgo Costruzioni native per il flusso di lavoro del prodotto in Capgo Costruzioni native, Capgo Integrazioni for the product workflow in Capgo Integrations, per il flusso di lavoro del prodotto in __CAPGO_KEEP_0__ Integrazioni, Integrazione CI/CD GitHub Actions Integration for the implementation detail in GitHub Actions Integration.