Intégration Azure DevOps
Copiez un prompt de configuration avec les étapes d'installation et le guide Markdown complet pour ce plugin.
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.
Ces étapes couvrent la configuration des workflows de builds automatiques, de tests et de déploiement.
PrérequisSection intitulée « Prérequis »
- Avant de configurer l'intégration Azure DevOps, assurez-vous d'avoir :
- A Capgo account with an app configured
- Your app’s source code in an Azure Repos Git repository
- Node.js and npm/yarn configured in your project
Configuration de la mise à jour continue Azure DevOps
Section intitulée « Configuration de la mise à jour continue Azure DevOps »Étape 1 : Créer des variables de pipeline
Section intitulée « Étape 1 : Créer des variables de pipeline »Tout d'abord, configurez les variables nécessaires dans votre projet Azure DevOps :
- Naviguez vers votre projet Azure DevOps
- Allez à Pipelines → Bibliothèque → Groupes de variables
- Créez un nouveau groupe de variables nommé
Capgo-Variables - Ajoutez les variables suivantes :
| Nom de variable | Valeur | Sécurisé |
|---|---|---|
CAPGO_TOKEN | Votre jeton Capgo API | ✅ Oui |
Configuration de base qui déploie en production à chaque poussée sur la branche 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'Déploiements de branches de fonctionnalité
Section intitulée “Déploiements de branches de fonctionnalité”Déployer les branches de fonctionnalité dans les canaux de test pour la revue et les tests :
# 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'Utilisation de l'encodage
Section intitulée « Utilisation de l'encodage »Si vous utilisez Capgo's fonctionnalité d'encodage, vous devrez stocker votre clé privée de manière sécurisée dans votre environnement CI/CD.
Après la configuration des clés d'encodage en local, ajoutez votre clé privée aux variables Azure DevOps :
# Display your private key content (copy this output)cat .capgo_key_v2Ajoutez ce contenu comme CAPGO_PRIVATE_KEY dans votre groupe de variables Azure DevOps (marquez comme secret), puis utilisez-le dans les 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'Configuration Multi-Canal
Section intitulée “Configuration Multi-Canal”Pour obtenir des informations complètes sur la configuration et la gestion de plusieurs canaux de déploiement, consultez la documentation sur les canaux.
Configuration complète avec plusieurs environnements et déploiements de demande de tirage :
# 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'Déploiement multi-environnement
Section intitulée « Déploiement multi-environnement »Pour des scénarios complexes avec plusieurs environnements :
# 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'Modèle de déploiement (deploy-steps.yml)
Section intitulée « Modèle de déploiement (deploy-steps.yml) »Créez un fichier de modèle réutilisable 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 }})'Stratégie de déploiement basée sur les branches
Section intitulée « Stratégie de déploiement basée sur les branches »Configurez différentes stratégies de déploiement en fonction des branches 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)'Meilleures pratiques de sécurité
Section intitulée « Meilleures pratiques de sécurité »Gestion sécurisée des variables
Section intitulée « Gestion sécurisée des variables »- Utilisez des groupes de variables : Stockez les données sensibles dans les groupes de variables Azure DevOps
- Marquer comme secret: Toujours marquez les jetons et les clés API comme des variables secrètes
- Accès à l'Espace: Limitez l'accès au groupe de variables aux flux de travail et utilisateurs spécifiques
- Rotation des Clés: Rotez régulièrement vos jetons Capgo et API
Surveillance et Notifications
Section intitulée « Surveillance et Notifications »Intégration des Équipes
Section intitulée « Intégration des Équipes »Ajoutez des notifications Microsoft Teams à votre flux de travail :
- 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'Notifications par Courrier
Section intitulée « Notifications par e-mail »Configurez les notifications par e-mail pour l'état de déploiement :
- 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)Résolution des problèmes
Section intitulée « Résolution des problèmes »Problèmes courants
Section intitulée « Problèmes courants »La pipeline échoue avec « Capgo CLI non trouvé » :
# Ensure global installation- script: | npm install -g @capgo/cli which capgo || echo "Capgo CLI not found in PATH" displayName: 'Install and verify Capgo CLI'Erreurs d'authentification :
# 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)Les artefacts de construction ne sont pas trouvés :
# List available artifacts for debugging- script: | ls -la $(System.ArtifactsDirectory) find $(System.ArtifactsDirectory) -name "*.js" -o -name "*.html" displayName: 'Debug artifacts'Pipeline de débogage
Section intitulée « Pipeline de débogage »Ajoutez des étapes de débogage pour résoudre les problèmes :
- 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'- Section intitulée « Étapes suivantes » Apprenez-en plus sur Canaux
- Zone de texte : Page/zone : Nom de fonctionnalité de canaux de mise à jour de Capgo. Page/zone : Page de marketing de solutions de Capgo. Rôle : Étiquette de navigation ou élément de navigation court. Voir dans : page solutions/white-label.astro. Message clé `solutions_white_label_visual_cell2_value` (Solutions White Label Visual Cell2 Value). pour gérer différents environnements de déploiement » : » Explorons » : » Stockage personnalisé pour des scénarios de déploiement avancés
- Configurer Chiffrement pour des déploiements sécurisés
- Configurer Comportement de mise à jour pour personnaliser la façon dont les mises à jour sont appliquées
Avec l'intégration Azure DevOps, vous pouvez automatiser vos déploiements Capgo et vous assurer d'une mise à jour cohérente et fiable pour vos utilisateurs d'applications mobiles.
Continuez de l'intégration Azure DevOps
Titre de la section « Continuez de l'intégration Azure DevOps »Si vous utilisez L'intégration Azure DevOps planifier l'automatisation CI/CD, la connecter à Capgo CI/CD pour le flux de travail du produit dans Capgo CI/CD, Capgo Builds natifs pour le flux de travail du produit dans Capgo Builds natifs, Capgo Intégrations for the product workflow in Capgo Integrations, pour le flux de travail du produit dans __CAPGO_KEEP_0__ Intégrations, Intégration CI/CD GitHub Actions Integration for the implementation detail in GitHub Actions Integration.