Azure DevOps-Integration
Kopieren Sie einen Setup-Vorschlag mit den Installationsanweisungen und der vollständigen Markdown-Anleitung für diesen Plugin.
Integrieren Sie Capgo Live Updates mit Azure DevOps Pipelines, um Ihre App-Updates automatisch zu deployen, sobald Sie code Änderungen pushen. Diese Anleitung deckt die Einrichtung von automatisierten Builds, Tests und Bereitstellungsworkflows ab.
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 Quellcode-code Ihres Apps in einem Azure Repos Git-Repository
- Node.js und npm/yarn in Ihrem Projekt konfiguriert
Einrichten von Azure DevOps Pipeline
Abschnitt mit dem Titel “Einrichten von Azure DevOps Pipeline”Schritt 1: Erstellen von Pipeline-Variablen
Abschnitt mit dem Titel “Schritt 1: Erstellen von Pipeline-Variablen”Erstellen Sie zunächst die notwendigen Variablen in Ihrem Azure DevOps-Projekt:
- Navigieren Sie zu Ihrem Azure DevOps-Projekt
- Zum Pipelines → Bibliothek → Variablengruppen
- Erstelle eine neue Variablengruppe mit dem Namen
Capgo-Variables - Fügen Sie die folgenden Variablen hinzu:
| Variablenname | Wert | Sicher |
|---|---|---|
CAPGO_TOKEN | Ihr 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“Funktionszweig-Deployments
Abschnitt mit dem Titel “Funktionszweig-Deployments”Deployen Sie Funktionszweige in Testkanäle 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 add $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 arbeiten
Verwendung von VerschlüsselungWenn Sie Azure DevOps verwenden Capgo’s Verschlüsselungsfeature, Sie müssen Ihren privaten Schlüssel sicher in Ihrem CI/CD-Umgebung speichern.
Nachdem die Verschlüsselungsschlüssel lokal eingerichtet wurden fügen Sie Ihren privaten Schlüssel in die Azure DevOps-Variablen ein:
# 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 Kanäle-Dokumentation.
Vollständige Konfiguration mit mehreren Umgebungen und Pull-Request-Bereitstellungen:
# 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'Multi-Umgebungsbereitstellung
Abschnitt mit dem Titel “Multi-Environment-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'Bereitstellungsvorlage (deploy-steps.yml)
Abschnitt mit dem Titel “Bereitstellungsvorlage (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 Bereitstellungstrategie
Abschnitt mit dem Titel “Branch-basierte Bereitstellungstrategie”Konfigurieren Sie unterschiedliche Bereitstellungstrategien 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
Abschnitt mit dem Titel “Sicherheitsbest Practices”Sichere Variable-Verwaltung
Abschnitt mit dem Titel “Sichere Variable-Verwaltung”- Verwendung von Variablen-GruppenSpeichern Sie sensible Daten in Azure DevOps-Variablen-Gruppen
- Als Geheim markierenImmer API-Tokens und -Schlüssel als geheime Variablen markieren
- ZugriffsbereichBeschränken Sie den Zugriff auf Variablen-Gruppen auf bestimmte Pipelines und Benutzer
- Schlüssel rotierenRegelmäßig Ihre Capgo- API-Tokens rotieren
Überwachung und Benachrichtigungen
Abschnitt: Überwachung und BenachrichtigungenTeams-Integration
Abschnitt: Teams-IntegrationFügen Sie Microsoft Teams-Benachrichtigungen zu Ihrem Pipeline hinzu:
- 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-BenachrichtigungenKonfigurieren Sie E-Mail-Benachrichtigungen für den Status der Bereitstellung:
- 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)Fehlersuche
Section titled “Troubleshooting”Häufige Probleme
Abschnitt mit dem Titel „Häufige Probleme“Pipeline fehlt 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-Artifacts 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 „Debug-Pipeline“Fügen Sie Schritte zur Fehlersuche hinzu:
- 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
Section titled “Next Steps”- Learn about Kanäle um verschiedene Bereitstellungsumgebungen zu verwalten
- Entdecken Zusätzliche Speicherung für fortgeschrittene Bereitstellungsszenarien
- Einrichten Verschlüsselung für sichere Bereitstellungen
- Konfigurieren Updateverhalten um das Updateverhalten anzupassen
Mit der Azure DevOps-Integration können Sie Ihre Capgo-Deployments automatisieren und sicherstellen, dass Ihre mobilen App-Benutzer konsistente und zuverlässige Updates erhalten.
Fortsetzung von Azure DevOps-Integration
Abschnitt mit dem Titel “Fortsetzung von Azure DevOps-Integration”Wenn Sie Azure DevOps-Integration verwenden Azure DevOps-Integration um die CI/CD-Automatisierung zu planen, verbinden Sie es mit Capgo CI/CD den Produktworkflow in Capgo CI/CD, Capgo nativee native Builds den Produktworkflow in Capgo Native Builds, Capgo Integrations zur Produktworkflow in Capgo Integrations CI/CD-Integration zur Implementierungsdetail in CI/CD-Integration, und GitHub Aktionen-Integration zur Implementierungsdetail in GitHub Aktionen-Integration.