Azure DevOps-Integration
Ein Setup-Prompt mit den Installations-Schritten und der vollständigen Markdown-Guideline für diesen Plugin kopieren.
Integriere 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 automatischen Builds, Tests und Bereitstellungs-Workflows ab.
Voraussetzungen
Abschnitt mit dem Titel „Voraussetzungen“Bevor Sie Azure DevOps integrieren, stellen Sie sicher, dass Sie haben:
- Eine Azure DevOps-Organisation und -Projekt
- Eine Capgo-Konto mit einer konfigurierten App
- Die Quell-code Ihrer App in einem Azure Repos Git-Repository
- Node.js und npm/yarn in Ihrem Projekt konfiguriert
Einrichtung von Azure DevOps Pipeline
Sektion mit dem Titel „Einrichtung von Azure DevOps Pipeline“Schritt 1: Erstellen von Pipeline-Variablen
Sektion mit dem Titel „Schritt 1: Erstellen von 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 → Variablengruppen
- Erstellen Sie eine neue Variablengruppe mit dem Namen
Capgo-Variables - Fügen Sie die folgenden Variablen hinzu:
| Variable Name | Wert | Sicher |
|---|---|---|
CAPGO_TOKEN | Ihr Capgo API Token | ✅ Ja |
Einfach
EinfachGrundlegende Konfiguration, die auf jeden Push an 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
EinfachFeature-Zweig-Deployments
EinfachFeature-Zweige in Testkanälen für Überprüfung und Testen deployen:
# 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'Verschlüsselung verwenden
Abschnitt mit dem Titel “Verschlüsselung verwenden”Wenn Sie die Capgo-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 Azure DevOps-Variablen hinzu:
# Display your private key content (copy this output)cat .capgo_key_v2Fügen Sie diesen Inhalt als CAPGO_PRIVATE_KEY im Azure DevOps Variablenpool (als Geheimnis markieren), dann verwenden Sie es 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 zur Einrichtung und Verwaltung mehrerer Bereitstellungskanäle, siehe die Dokumentation zu den Kanälen.
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 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'Mehrumgebungs-Bereitstellung
Abschnitt mit dem Titel “Mehrumgebungs-Bereitstellung”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'Bereitstellungs-Template (deploy-steps.yml)
Abschnitt mit dem Titel “Bereitstellungs-Template (deploy-steps.yml)”Erstellen Sie ein wiederverwendbares Template-File 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 Bereitstellungsstrategie
Abschnitt mit dem Titel „Branch-basierte 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
Abschnitt mit dem Titel „Sicherheitsbest Practices”Sichere Variable-Verwaltung
Abschnitt mit dem Titel „Sichere Variable-Verwaltung”- Verwenden Sie Variable-Gruppen: Speichern Sie sensible Daten in Azure DevOps-Variablen-Gruppen
- Als Geheim markieren: Immer markiere API-Tokens und -Schlüssel als geheime Variablen
- Zugriffsberechtigung: Beschränke den Zugriff auf Variabengruppen auf bestimmte Pipelines und Benutzer
- Schlüsselrotation: Rotiere deine Capgo- API-Tokens regelmäßig
Überwachung und Benachrichtigungen
Abschnitt mit dem Titel “Überwachung und Benachrichtigungen”Teams-Integration
Abschnitt mit dem Titel “Teams-Integration”Füge Microsoft-Teams-Benachrichtigungen deiner 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 mit dem Titel „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)Fehlersuche
Abschnitt mit dem Titel „Fehlersuche“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 „Debug-Pipeline“Fügen Sie Schritte zum Debuggen hinzu, 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“- Erfahren Sie mehr über Kanäle, um verschiedene Bereitstellungsumgebungen zu verwalten Erkunden Sie
- Benutzerdefinierte Speicherung Explore für fortgeschrittene Bereitstellungsanforderungen
- Einrichten Verschlüsselung für sichere Bereitstellungen
- Konfigurieren Aktualisierungsverhalten Um die Anwendung von Updates zu personalisieren
Mit der Integration in Azure DevOps können Sie Ihre Capgo-Bereitstellungen automatisieren und sicherstellen, dass Ihre mobilen App-Benutzer konsistente und zuverlässige Updates erhalten.
Weitermachen mit Azure DevOps Integration
Abschnitt mit dem Titel “Weitermachen mit Azure DevOps Integration”Wenn Sie Azure DevOps Integration verwenden Azure DevOps Integration für die Automatisierung von CI/CD zu planen, mit ihm verbinden 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 GitHub Actions-Integration für die Implementierungsdetails in GitHub Actions-Integration