Intégration GitLab CI/CD
Intégrez Capgo Live Updates avec GitLab CI/CD pour déployer automatiquement vos mises à jour d’application à chaque fois que vous poussez des modifications de code. Ce guide couvre la configuration des workflows de build, de test et de déploiement automatisés.
Prérequis
Section titled “Prérequis”Avant de configurer l’intégration GitLab CI/CD, assurez-vous d’avoir :
- Un compte GitLab avec un référentiel de projet
- Un compte Capgo avec une application configurée
- Node.js et npm/yarn configurés dans votre projet
Configuration de GitLab CI/CD
Section titled “Configuration de GitLab CI/CD”Étape 1 : Configurer les variables d’environnement
Section titled “Étape 1 : Configurer les variables d’environnement”Tout d’abord, configurez les variables nécessaires dans votre projet GitLab :
- Accédez à votre projet GitLab
- Allez dans Settings → CI/CD → Variables
- Ajoutez les variables suivantes :
| Nom de variable | Valeur | Protégé | Masqué |
|---|---|---|---|
CAPGO_TOKEN | Votre jeton API Capgo | ✅ Oui | ✅ Oui |
Simple
Section titled “Simple”Configuration de base qui déploie en production à chaque push vers la branche main :
# .gitlab-ci.yml - Configuration simpleimage: node:22
stages: - build - deploy
variables: npm_config_cache: "$CI_PROJECT_DIR/.npm"
build: stage: build script: - npm ci - npm run test - npm run build artifacts: paths: - dist/ expire_in: 1 hour only: - main
deploy_production: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production # For encrypted uploads, add: --key-data-v2 "$CAPGO_PRIVATE_KEY" dependencies: - build only: - mainAvancé
Section titled “Avancé”Déploiements de branches de fonctionnalités
Section titled “Déploiements de branches de fonctionnalités”Déployez les branches de fonctionnalités vers des canaux de test pour révision et test :
# Déploiement de branche de fonctionnalitédeploy_feature: stage: deploy script: - npm install -g @capgo/cli - CHANNEL_NAME="feature-$(echo $CI_COMMIT_REF_NAME | sed 's/[^a-zA-Z0-9-]/-/g')" - npx @capgo/cli channel create $CHANNEL_NAME --apikey $CAPGO_TOKEN || true - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel $CHANNEL_NAME dependencies: - build only: - /^feature\/.*$/ environment: name: feature/$CI_COMMIT_REF_NAME url: https://your-app.com/channels/$CHANNEL_NAMEUtilisation du chiffrement
Section titled “Utilisation du chiffrement”Si vous utilisez la fonctionnalité de chiffrement de Capgo, vous devrez stocker votre clé privée en toute sécurité dans votre environnement CI/CD.
Après avoir configuré les clés de chiffrement localement, ajoutez votre clé privée aux variables GitLab :
# Afficher le contenu de votre clé privée (copiez cette sortie)cat .capgo_key_v2Ajoutez ce contenu en tant que CAPGO_PRIVATE_KEY dans les variables de votre projet GitLab (marquez comme protégé et masqué), puis utilisez-le dans les pipelines :
# Déployer avec chiffrementdeploy_production: script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --key-data-v2 "$CAPGO_PRIVATE_KEY" --channel productionConfiguration multi-canaux
Section titled “Configuration multi-canaux”Pour 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 merge request :
# .gitlab-ci.yml - Configuration multi-canaux avancéeimage: node:22
stages: - build - deploy
variables: npm_config_cache: "$CI_PROJECT_DIR/.npm"
# Étape de buildbuild: stage: build script: - npm ci - npm run test - npm run build artifacts: paths: - dist/ expire_in: 24 hours
# Déployer vers le canal de développementdeploy_development: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel development dependencies: - build only: - develop environment: name: development
# Déployer les merge requests vers des canaux de testdeploy_mr: stage: deploy script: - npm install -g @capgo/cli - CHANNEL_NAME="mr-$CI_MERGE_REQUEST_IID" - npx @capgo/cli channel create $CHANNEL_NAME --apikey $CAPGO_TOKEN || true - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel $CHANNEL_NAME dependencies: - build only: - merge_requests environment: name: review/$CI_MERGE_REQUEST_IID url: https://your-app.com/channels/mr-$CI_MERGE_REQUEST_IID on_stop: cleanup_mr
# Nettoyer les canaux MR lorsque la MR est ferméecleanup_mr: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli channel delete mr-$CI_MERGE_REQUEST_IID --apikey $CAPGO_TOKEN || true when: manual environment: name: review/$CI_MERGE_REQUEST_IID action: stop only: - merge_requests
# Déployer vers stagingdeploy_staging: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel staging dependencies: - build only: - develop environment: name: staging
# Déployer vers productiondeploy_production: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production dependencies: - build only: - main environment: name: productionMulti-environnements avec approbation manuelle
Section titled “Multi-environnements avec approbation manuelle”Pour les déploiements de production nécessitant une approbation manuelle :
deploy_production: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production dependencies: - build only: - main when: manual environment: name: productionStratégie de déploiement basée sur les branches
Section titled “Stratégie de déploiement basée sur les branches”Déployer automatiquement différentes branches vers les canaux appropriés :
# Déploiement dynamique de canal basé sur la branchedeploy: stage: deploy script: - npm install -g @capgo/cli - | if [ "$CI_COMMIT_REF_NAME" = "main" ]; then CHANNEL="production" elif [ "$CI_COMMIT_REF_NAME" = "develop" ]; then CHANNEL="staging" else CHANNEL="development" fi - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel $CHANNEL dependencies: - build environment: name: $CHANNELMeilleures pratiques de sécurité
Section titled “Meilleures pratiques de sécurité”Variables protégées
Section titled “Variables protégées”- Marquer les variables sensibles : Toujours marquer les jetons API comme protégés et masqués
- Protection des branches : Utiliser des variables protégées pour les déploiements de production
- Contrôle d’accès : Limiter l’accès aux variables aux mainteneurs uniquement
- Rotation régulière : Effectuer régulièrement la rotation des jetons API
Configuration sécurisée du pipeline
Section titled “Configuration sécurisée du pipeline”# Utiliser des variables protégées pour la productiondeploy_production: stage: deploy script: - npm install -g @capgo/cli - npx @capgo/cli bundle upload --apikey $CAPGO_TOKEN --channel production only: refs: - main variables: - $CI_COMMIT_REF_PROTECTED == "true"Surveillance et notifications
Section titled “Surveillance et notifications”Intégration Slack
Section titled “Intégration Slack”Ajoutez des notifications Slack à votre pipeline :
notify_success: stage: .post image: alpine:latest before_script: - apk add --no-cache curl script: - | curl -X POST -H 'Content-type: application/json' \ --data '{"text":"✅ Capgo deployment successful for '"$CI_COMMIT_REF_NAME"'"}' \ $SLACK_WEBHOOK_URL when: on_success
notify_failure: stage: .post image: alpine:latest before_script: - apk add --no-cache curl script: - | curl -X POST -H 'Content-type: application/json' \ --data '{"text":"❌ Capgo deployment failed for '"$CI_COMMIT_REF_NAME"'"}' \ $SLACK_WEBHOOK_URL when: on_failureNotifications par e-mail
Section titled “Notifications par e-mail”Configurez les notifications par e-mail dans les paramètres de votre projet GitLab ou utilisez l’API :
notify_email: stage: .post script: - | curl --request POST \ --header "PRIVATE-TOKEN: $GITLAB_API_TOKEN" \ --form "to=team@yourcompany.com" \ --form "subject=Capgo Deployment Status" \ --form "body=Deployment of $CI_COMMIT_REF_NAME completed with status: $CI_JOB_STATUS" \ "https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/emails" when: alwaysDépannage
Section titled “Dépannage”Problèmes courants
Section titled “Problèmes courants”Le pipeline échoue avec “Capgo CLI not found” :
# Déboguer l'installation du CLIdebug_cli: script: - npm install -g @capgo/cli - which capgo || echo "Capgo CLI not found" - npx @capgo/cli --versionErreurs d’authentification :
# Vérifier la configuration du jetondebug_auth: script: - | if [ -z "$CAPGO_TOKEN" ]; then echo "CAPGO_TOKEN is not set" exit 1 fi echo "Token length: ${#CAPGO_TOKEN}"Artefacts de build introuvables :
# Lister les sorties de builddebug_build: script: - ls -la dist/ - find dist/ -type f -name "*.js" -o -name "*.html"Pipeline de débogage
Section titled “Pipeline de débogage”Ajoutez des informations de débogage pour résoudre les problèmes :
debug: stage: build script: - echo "Branch: $CI_COMMIT_REF_NAME" - echo "Commit: $CI_COMMIT_SHA" - echo "Build: $CI_PIPELINE_ID" - env | grep CI_ | sort only: - branchesProchaines étapes
Section titled “Prochaines étapes”- Découvrez les Canaux pour gérer différents environnements de déploiement
- Explorez le Stockage personnalisé pour des scénarios de déploiement avancés
- Configurez le Chiffrement pour des déploiements sécurisés
- Configurez le Comportement des mises à jour pour personnaliser l’application des mises à jour
Avec l’intégration GitLab CI/CD, vous pouvez automatiser vos déploiements Capgo et garantir des mises à jour cohérentes et fiables pour les utilisateurs de votre application mobile.