Intégration Azure DevOps
Copiez un prompt de configuration avec les étapes d'installation et le guide markdown complet pour ce plugin.
Intégrez les Live Update de Capgo avec les pipelines Azure DevOps pour déployer automatiquement vos mises à jour dès que vous poussez des changements code. Ce guide couvre la configuration des workflows de build automatisés, de test et de déploiement.
Prerequisites
Section intitulée « Prérequis »Avant de configurer l'intégration Azure DevOps, assurez-vous d'avoir :
- Une organisation et un projet Azure DevOps
- Un compte Capgo avec une application configurée
- Le code source de votre application dans un dépôt Azure Repos Git
- Node.js et npm/yarn configurés dans votre projet
Configuration du pipeline Azure DevOps
Section intitulée « Configuration du pipeline Azure DevOps »Étape 1 : Créer les variables du pipeline
Section intitulée « Étape 1 : Créer les variables du pipeline »Tout d'abord, configurez les variables nécessaires dans votre projet Azure DevOps :
- Accédez à votre projet Azure DevOps
- Allez dans Pipelines → Library → Groupes de variables
- Créez un nouveau groupe de variables nommé
Capgo-Variables - Ajoutez les variables suivantes :
| Nom de la variable | Valeur | Sécurisé |
|---|---|---|
CAPGO_TOKEN | Votre token Capgo API | ✅ Oui |
Configuration de base qui déploie en production à chaque push sur la branche main :
# 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 par feature branch
Section intitulée « Déploiements par branche de fonctionnalité »Déployez vos branches de fonctionnalités vers des canaux de test pour revue et test :
# 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'Utilisation du chiffrement
Section intitulée « Utiliser le chiffrement »Si vous utilisez La fonctionnalité de chiffrement de Capgo, vous devrez stocker votre clé privée de façon sécurisée dans votre environnement CI/CD.
Après configuration des clés de chiffrement 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 en tant que CAPGO_PRIVATE_KEY dans votre groupe de variables Azure DevOps (marquez-le comme secret), puis utilisez-le dans vos 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-canaux
Section intitulée « Configuration multi-canaux »Pour plus d'informations 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 via pull request :
# 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'Déploiement multi-environnements
Section intitulée « Déploiement multi-environnements »Pour les 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'Template de déploiement (deploy-steps.yml)
Section intitulée « Template de déploiement (deploy-steps.yml) »Créez un fichier template 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 par branche
Section intitulée « Stratégie de déploiement par branche »Configurez différentes stratégies de déploiement selon les 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)'Bonnes pratiques de sécurité
Section intitulée « Bonnes pratiques de sécurité »Gestion sécurisée des variables
Section intitulée « Gestion sécurisée des variables »- Utiliser les Variable Groups: Stockez les données sensibles dans les Variable Groups d'Azure DevOps
- Marquer comme secret: Marquez toujours les tokens et clés API comme variables secrètes
- Limiter l'accès: Limitez l'accès aux Variable Groups à des pipelines et utilisateurs spécifiques
- Rotation des clés: Faites tourner régulièrement vos tokens API Capgo
Monitoring et notifications
Section intitulée « Monitoring et notifications »Intégration Teams
Section intitulée « Intégration Teams »Ajoutez des notifications Microsoft Teams à votre 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'Notifications par e-mail
Section intitulée « Notifications par e-mail »Configurez les notifications par e-mail pour le statut 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)Troubleshooting
Section intitulée « Dépannage »Problèmes courants
Section intitulée « Problèmes courants »Le pipeline échoue avec l'erreur « Capgo CLI not found » :
# 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)Artefacts de build introuvables :
# List available artifacts for debugging- script: | ls -la $(System.ArtifactsDirectory) find $(System.ArtifactsDirectory) -name "*.js" -o -name "*.html" displayName: 'Debug artifacts'Déboguer le pipeline
Section « Déboguer le pipeline »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'Étapes suivantes
Section intitulée « Étapes suivantes »- En savoir plus sur Canaux pour gérer différents environnements de déploiement
- Explorer 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 l'application des mises à jour
Grâce à l'intégration Azure DevOps, vous pouvez automatiser vos déploiements Capgo et garantir des mises à jour cohérentes et fiables à vos utilisateurs mobiles.
Continuer depuis l'intégration Azure DevOps
Section intitulée « Aller plus loin avec l'intégration Azure DevOps »Si vous utilisez Intégration Azure DevOps pour planifier l'automatisation CI/CD, le relier à CI/CD Capgo pour le workflow produit dans le CI/CD de Capgo, Capgo Native Build pour le workflow produit dans les Capgo Native Builds, Intégrations Capgo pour le workflow produit dans les intégrations Capgo, Intégration CI/CD pour les détails d'implémentation de l'intégration CI/CD, et Intégration GitHub Actions pour les détails d'implémentation de l'intégration GitHub Actions.