Azure DevOps Integration
Einen Setup-Prompt mit den Installationsanweisungen und der vollständigen Markdown-Dokumentation für diesen Plugin kopieren.
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.
Voraussetzungen
Abschnitt mit dem Titel “Voraussetzungen”Bevor Sie die Azure DevOps-Integration einrichten, stellen Sie sicher, dass Sie haben:
- Eine Azure DevOps-Organisation und ein Projekt
- Eine Capgo-Konto mit einer konfigurierten App
- Die Quelltext-code Ihrer App in einem Azure Repos Git-Repository
- Node.js und npm/yarn in Ihrem Projekt konfiguriert
Einrichtung von Azure DevOps Pipeline
Abschnitt mit dem Titel “Einrichtung von Azure DevOps Pipeline”Schritt 1: Erstellen Sie Pipeline-Variablen
Abschnitt mit dem Titel „Schritt 1: Erstellen Sie Pipeline-Variablen“Zunächst müssen Sie in Ihrem Azure DevOps-Projekt die notwendigen Variablen einrichten:
- Navigieren Sie zu Ihrem Azure DevOps-Projekt
- Gehe zu Pipelines → Bibliothek → Variablegruppen
- Erstellen Sie eine neue Variablegruppe mit dem Namen
Capgo-Variables - Fügen Sie die folgenden Variablen hinzu:
| Variablenname | Wert | Sicher |
|---|---|---|
CAPGO_TOKEN | Dein Capgo API Token | ✅ Ja |
Grundlegende Konfiguration, die auf jeden Push in die Hauptzweig in die Produktion deployt:
# 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'Erweitert
Abschnitt mit dem Titel “Erweitert”Feature Branch Deployments
Abschnitt mit dem Titel “Feature Branch Deployments”Deploye Featurezweige in Testkanälen für die Überprüfung und Testung:
# 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'Mit Verschlüsselung verwenden
Abschnitt mit dem Titel „Mit Verschlüsselung verwenden“Wenn Sie Capgo's Verschlüsselungsfunktion verwenden, müssen Sie Ihren privaten Schlüssel sicher in Ihrem CI/CD-Umgebung speichern.
Nachdem Sie die Verschlüsselungsschlüssel lokal eingerichtet haben, fügen Sie Ihren privaten Schlüssel zu den Azure DevOps-Variablen hinzu:
# Display your private key content (copy this output)cat .capgo_key_v2Fügen Sie diesen Inhalt als CAPGO_PRIVATE_KEY in Ihrer Azure DevOps-Variablen-Gruppe (als Geheimnis markieren) ein und verwenden Sie ihn in 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'Multi-Channel-Konfiguration
Abschnitt mit dem Titel “Multi-Channel-Konfiguration”Für umfassende Informationen zum Einrichten und Verwalten mehrerer Bereitstellungskanäle, siehe die Dokumentation zu den Kanälen.
Vollständige Konfiguration mit mehreren Umgebungen und Pull-Request-Deployments:
# 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'Multi-Umgebung-Deployment
Abschnitt mit dem Titel “Multi-Umgebung-Deployment”Für komplexe Szenarien mit mehreren Umgebungen:
# 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'Deployment-Vorlage (deploy-steps.yml)
Abschnitt mit dem Titel “Deployment-Vorlage (deploy-steps.yml)”Erstellen Sie eine verwendbare Vorlagendatei 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 }})'Branch-basierte Deployment-Strategie
Sektion mit dem Titel „Branchbasierte Bereitstellungsstrategie“Konfigurieren Sie verschiedene Bereitstellungsstrategien basierend auf Git-Branches:
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)'Sicherheitsbest Practices
Sektion mit dem Titel „Sicherheitsbest Practices“Sichere Variable-Verwaltung
Sektion mit dem Titel „Sichere Variable-Verwaltung“- Verwendung von Variablen-GruppenSensible Daten in Azure DevOps-Variablen-Gruppen speichern
- Als Geheim markierenImmer API-Tokens und Schlüssel als geheime Variablen markieren
- Zugriffsbereich definieren: Zugriff auf Variablen-Gruppen auf bestimmte Pipelines und Benutzer beschränken
- Schlüssel rotieren: Regelmäßig rotieren Sie Ihre Capgo API-Tokens
Überwachung und Benachrichtigungen
Abschnitt 'Überwachung und Benachrichtigungen'Integration von Teams
Abschnitt 'Integration von Teams'Microsoft Teams-Benachrichtigungen für Ihre Pipeline hinzufügen:
- 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'E-Mail-Benachrichtigungen
Abschnitt 'E-Mail-Benachrichtigungen'E-Mail-Benachrichtigungen für den Status der Bereitstellung konfigurieren:
- 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)Fehlerbehebung
Abschnitt mit dem Titel „Fehlerbehebung”Häufige Probleme
Abschnitt mit dem Titel „Häufige Probleme”Pipeline fehlschlägt mit „Capgo CLI nicht gefunden“:
# Ensure global installation- script: | npm install -g @capgo/cli which capgo || echo "Capgo CLI not found in PATH" displayName: 'Install and verify Capgo CLI'Authentifizierungsfehler:
# 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)Build-Artikel nicht gefunden:
# List available artifacts for debugging- script: | ls -la $(System.ArtifactsDirectory) find $(System.ArtifactsDirectory) -name "*.js" -o -name "*.html" displayName: 'Debug artifacts'Debug-Pipeline
Abschnitt mit dem Titel „Fehlersuche Pipeline“Schritte zur Fehlersuche hinzufügen, um Probleme zu lösen:
- 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'Nächste Schritte
Abschnitt mit dem Titel „Nächste Schritte“- Über Kanäle um verschiedene Bereitstellungsumgebungen zu verwalten
- Erkunden Benutzerdefinierte Speicherung für fortgeschrittene Bereitstellungsszenarien
- Einrichten Verschlüsselung für sichere Bereitstellungen
- Konfigurieren Aktualisierungsverhalten anpassen um zu bestimmen, wie Aktualisierungen angewendet werden
Mit der Integration von Azure DevOps können Sie Ihre Capgo-Bereitstellungen automatisieren und sicherstellen, dass Ihre mobilen App-Benutzer konsistente und zuverlässige Aktualisierungen erhalten.
Weitermachen von Azure DevOps Integration
Abschnitt mit dem Titel “Weitermachen von Azure DevOps Integration”Wenn Sie Azure DevOps Integration verwenden um die CI/CD-Automatisierung zu planen, verbinden Sie sie mit __CAPGO_KEEP_0__ CI/CD Capgo CI/CD für den Produktworkflow in Capgo CI/CD Capgo Native Builds für den Produktworkflow in Capgo Native Builds Capgo Integrations für den Produktworkflow in Capgo Integrations CI/CD-Integration für die Implementierungsdetails in CI/CD-Integration und GitHub Actions-Integration für die Implementierungsdetails in GitHub Actions-Integration