Passer au contenu

Intégration des Pipelines de Bitbucket

Intégrez les mises à jour en direct Capgo avec Bitbucket Pipelines pour déployer automatiquement les mises à jour de votre application chaque fois que vous publiez code des modifications. Ce guide couvre la configuration des workflows de build automatique, de test et de déploiement.

Avant de configurer l'intégration des pipelines de Bitbucket, assurez-vous d'avoir :

  • Un compte Bitbucket avec un dépôt
  • Un compte Capgo avec une application configurée
  • Node.js et npm/yarn configurés dans votre projet

Tout d'abord, configurez les variables nécessaires dans votre dépôt Bitbucket :

  1. Naviguez vers votre dépôt Bitbucket
  2. Allez à Paramètres du dépôtPipelinesVariables du dépôt
  3. Ajoutez les variables suivantes :
Nom de la variableValeurSécurisé
CAPGO_TOKENVotre jeton Capgo API✅ Oui

Configuration de base qui déploie en production à chaque poussée sur la branche principale :

# bitbucket-pipelines.yml - Simple Configuration
image: node:22
pipelines:
branches:
main:
- step:
name: Build and Deploy to Production
script:
- npm ci
- npm run test
- npm run build
- npm install -g @capgo/cli
- npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production
artifacts:
- dist/**

Déployez les branches de fonctionnalités dans les canaux de test pour examen et test :

# Feature branch deployment
pipelines:
branches:
feature/*:
- step:
name: Deploy Feature Branch
script:
- npm ci
- npm run test
- npm run build
- BRANCH_NAME=$(echo $BITBUCKET_BRANCH | 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
artifacts:
- dist/**

Si vous utilisez la fonctionnalité d'encryption de __CAPGO_KEEP_0__

Vous devrez stocker votre clé privée de manière sécurisée dans votre environnement CI/CD.

Utilisation de l'Encryption Si vous utilisez la fonctionnalité d'encryption de CapgoVous devrez stocker votre clé privée de manière sécurisée dans votre environnement CI/CD.

After avoir configuré les clés d'encryption localement, ajoutez votre clé privée aux variables Bitbucket : Terminal Copier dans le presse-papier

Ajoutez ce contenu comme
# Display your private key content (copy this output)
cat .capgo_key_v2

Copier dans le presse-papier CAPGO_PRIVATE_KEY Attention

# Deploy with encryption
- step:
name: Deploy to Capgo with Encryption
script:
- npm install -g @capgo/cli
- npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --key-data-v2 "$CAPGO_PRIVATE_KEY" --channel production

Pour obtenir des informations complètes sur la configuration et la gestion de plusieurs canaux de déploiement, consultez la documentation des canaux.

Configuration complète avec plusieurs environnements et déploiements de demande de tirage :

# bitbucket-pipelines.yml - Advanced Multi-Channel Configuration
image: node:22
definitions:
steps:
- step: &build-step
name: Build Application
script:
- npm ci
- npm run test
- npm run build
artifacts:
- dist/**
- step: &deploy-step
name: Deploy to Capgo
script:
- npm install -g @capgo/cli
- npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel $CHANNEL_NAME
pipelines:
branches:
main:
- step:
<<: *build-step
- step:
<<: *deploy-step
name: Deploy to Production
deployment: production
trigger: manual
script:
- export CHANNEL_NAME=production
- npm install -g @capgo/cli
- npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel $CHANNEL_NAME
develop:
- step:
<<: *build-step
- step:
<<: *deploy-step
name: Deploy to Development
deployment: development
script:
- export CHANNEL_NAME=development
- npm install -g @capgo/cli
- npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel $CHANNEL_NAME
pull-requests:
'**':
- step:
<<: *build-step
- step:
name: Deploy PR to Test Channel
script:
- CHANNEL_NAME="pr-$BITBUCKET_PR_ID"
- 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
artifacts:
- dist/**

Pour des scénarios de déploiement complexes avec des environnements de mise en scène et de production :

# Multi-environment pipeline
image: node:22
pipelines:
branches:
main:
- step:
name: Build
script:
- npm ci
- npm run test
- npm run build
artifacts:
- dist/**
- step:
name: Deploy to Staging
deployment: staging
script:
- npm install -g @capgo/cli
- npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel staging
- step:
name: Deploy to Production
deployment: production
trigger: manual
script:
- npm install -g @capgo/cli
- npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production
develop:
- step:
name: Build and Deploy to Development
script:
- npm ci
- npm run test
- npm run build
- npm install -g @capgo/cli
- npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel development
artifacts:
- dist/**

Stratégie de déploiement basée sur les branches

Section intitulée “Stratégie de déploiement basée sur les branches”

Déployer automatiquement différentes branches vers les canaux appropriés :

# Dynamic channel deployment
image: node:22
definitions:
scripts:
- script: &determine-channel |
if [ "$BITBUCKET_BRANCH" = "main" ]; then
export CHANNEL_NAME="production"
elif [ "$BITBUCKET_BRANCH" = "develop" ]; then
export CHANNEL_NAME="staging"
else
export CHANNEL_NAME="development"
fi
echo "Deploying to channel: $CHANNEL_NAME"
pipelines:
default:
- step:
name: Build and Deploy
script:
- npm ci
- npm run test
- npm run build
- *determine-channel
- npm install -g @capgo/cli
- npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel $CHANNEL_NAME
artifacts:
- dist/**

Optimiser les temps de build avec des étapes parallèles :

# Parallel execution pipeline
image: node:22
pipelines:
branches:
main:
- parallel:
- step:
name: Run Tests
script:
- npm ci
- npm run test
- step:
name: Lint Code
script:
- npm ci
- npm run lint
- step:
name: Build Application
script:
- npm ci
- npm run build
artifacts:
- dist/**
- step:
name: Deploy to Production
deployment: production
script:
- npm install -g @capgo/cli
- npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production
  1. Variables Sécures: Marquez toujours les jetons API comme sécurisés
  2. Variables d'Environnement: Utilisez les variables spécifiques à la déploiement lorsque nécessaire
  3. Contrôle d'Accès: Limitez l'accès au répertoire aux membres de l'équipe autorisés
  4. Rotation de Jetons: Rotez régulièrement vos Capgo API jetons

Configurez les environnements de déploiement pour une meilleure sécurité :

# Deployment with environment restrictions
pipelines:
branches:
main:
- step:
name: Deploy to Production
deployment: production
trigger: manual
script:
- npm install -g @capgo/cli
- npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production

Ajoutez des notifications Slack à votre pipeline :

# Pipeline with Slack notifications
pipelines:
branches:
main:
- step:
name: Build and Deploy
script:
- npm ci
- npm run test
- npm run build
- npm install -g @capgo/cli
- npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production
after-script:
- |
if [ $BITBUCKET_EXIT_CODE -eq 0 ]; then
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"✅ Capgo deployment successful for '$BITBUCKET_BRANCH'"}' \
$SLACK_WEBHOOK_URL
else
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"❌ Capgo deployment failed for '$BITBUCKET_BRANCH'"}' \
$SLACK_WEBHOOK_URL
fi

Configurez les notifications par e-mail à l'aide des fonctionnalités intégrées de Bitbucket ou en utilisant des services externes :

# Email notification step
- step:
name: Send Notification
script:
- |
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"to": "team@yourcompany.com",
"subject": "Capgo Deployment Status",
"body": "Deployment of '$BITBUCKET_BRANCH' completed with status: '$BITBUCKET_EXIT_CODE'"
}' \
$EMAIL_SERVICE_URL
condition:
result: [successful, failed]

La pipeline échoue avec « Capgo CLI non trouvé » :

# Debug CLI installation
- step:
name: Debug CLI
script:
- npm install -g @capgo/cli
- which capgo || echo "Capgo CLI not found"
- npx @capgo/cli --version

Erreurs d'authentification :

# Verify token configuration
- step:
name: Debug Auth
script:
- |
if [ -z "$CAPGO_TOKEN" ]; then
echo "CAPGO_TOKEN is not set"
exit 1
fi
echo "Token length: ${#CAPGO_TOKEN}"

Les artefacts de construction non trouvés :

# List build outputs
- step:
name: Debug Build
script:
- ls -la dist/
- find dist/ -type f -name "*.js" -o -name "*.html"

Ajouter des informations de débogage pour résoudre les problèmes :

# Debug pipeline
pipelines:
branches:
main:
- step:
name: Debug Information
script:
- echo "Branch: $BITBUCKET_BRANCH"
- echo "Commit: $BITBUCKET_COMMIT"
- echo "Build: $BITBUCKET_BUILD_NUMBER"
- env | grep BITBUCKET_ | sort
- step:
name: Build and Deploy
script:
- npm ci
- npm run test
- npm run build
- npm install -g @capgo/cli
- npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production

Activez la validation de pipeline pour détecter les erreurs de configuration :

# Enable pipeline validation
options:
docker: true
size: 2x
pipelines:
branches:
main:
- step:
name: Validate Pipeline
script:
- echo "Pipeline validation successful"
- step:
name: Build and Deploy
script:
# ... deployment steps

Avec l'intégration de Bitbucket Pipelines, vous pouvez automatiser vos Capgo déploiements et vous assurer d'obtenir des mises à jour cohérentes et fiables pour vos utilisateurs de l'application mobile.

Continuez d'avancer depuis l'intégration de Bitbucket Pipelines

Section intitulée “Continuez d'avancer depuis l'intégration de Bitbucket Pipelines”

Si vous utilisez Intégration de Bitbucket Pipelines plan l'automatisation de 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 pour le flux de travail du produit dans Capgo Intégrations, Intégration de CI/CD pour les détails d'implémentation dans Intégration de CI/CD, et GitHub Intégration d'Actions pour les détails d'implémentation dans GitHub Intégration d'Actions.