GitHub Intégration des actions
Intégrez Capgo Live Updates avec GitHub Actions pour déployer automatiquement les mises à jour de votre application chaque fois que vous apportez des modifications au code. Ce guide couvre la configuration de workflows automatisés de génération, de test et de déploiement à l’aide de la puissante plateforme CI/CD de GitHub.
Prérequis
Section titled “Prérequis”Avant de configurer l’intégration des actions GitHub, assurez-vous d’avoir :
- Un dépôt GitHub avec le code source de votre application
- Un compte Capgo avec une application configurée
- Node.js et npm/fil configurés dans votre projet
- GitHub Actions activées pour votre référentiel
Configuration des secrets GitHub
Section titled “Configuration des secrets GitHub”Étape 1 : Configurer les secrets du référentiel
Section titled “Étape 1 : Configurer les secrets du référentiel”Configurez les secrets nécessaires dans votre référentiel GitHub :
- Accédez à votre référentiel GitHub
- Accédez à Paramètres → Secrets et variables → Actions.
- Cliquez sur Nouveau secret du référentiel et ajoutez les éléments suivants :
| Nom secret | Valeur |
|---|---|
CAPGO_TOKEN | Votre jeton Capgo API |
Déploiement de production simple
Section titled “Déploiement de production simple”Commencez par cette configuration de base qui se déploie en production à chaque poussée vers la branche principale :
# Simple GitHub Actions Workflow for Capgo Live Updatesname: Deploy to Capgo
on: push: branches: - main
jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6
- name: Setup Node.js uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- name: Install, test and build run: | npm ci npm run test npm run build
- name: Deploy to Capgo run: | npm install -g @capgo/cli npx @capgo/cli bundle upload --channel production env: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }} # For encrypted uploads, add: --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}"Configuration multicanal avancée
Section titled “Configuration multicanal avancée”Déploiements de branches de fonctionnalités
Section titled “Déploiements de branches de fonctionnalités”Déployez des branches de fonctionnalités sur des canaux temporaires à des fins de test :
# Feature branch deploymentname: Deploy Feature Branch to Capgo
on: push: branches: - 'feature/**'
jobs: deploy-feature: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- run: | npm ci npm run test npm run build
- name: Deploy to feature channel run: | CHANNEL_NAME=$(echo "${{ github.ref_name }}" | sed 's/[^a-zA-Z0-9]/-/g' | tr '[:upper:]' '[:lower:]') npm install -g @capgo/cli npx @capgo/cli channel create $CHANNEL_NAME --apikey ${{ secrets.CAPGO_TOKEN }} || true npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel $CHANNEL_NAMEUtilisation du cryptage
Section titled “Utilisation du cryptage”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 secrets GitHub :
# Display your private key content (copy this output)cat .capgo_key_v2Ajoutez ce contenu sous le nom CAPGO_PRIVATE_KEY dans les secrets de votre référentiel GitHub, puis utilisez-le dans les workflows :
# Deploy with encryption- name: Deploy to Capgo with Encryption run: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}" --channel productionConfiguration multicanal
Section titled “Configuration multicanal”Pour obtenir des informations complètes sur la configuration et la gestion de plusieurs canaux de déploiement, consultez la Documentation des canaux.
Flux de travail complet avec développement, demandes d’extraction et déploiements de production :
# Complete multi-environment workflowname: Deploy to Capgo
on: push: branches: [main, develop] pull_request: branches: [main, develop]
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- run: | npm ci npm run test npm run build
- uses: actions/upload-artifact@v4 with: name: dist path: dist/
deploy-development: if: github.ref == 'refs/heads/develop' needs: build runs-on: ubuntu-latest environment: development steps: - uses: actions/setup-node@v6 with: node-version: '24'
- uses: actions/download-artifact@v4 with: name: dist path: dist/
- run: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel development
deploy-pr: if: github.event_name == 'pull_request' needs: build runs-on: ubuntu-latest steps: - uses: actions/setup-node@v6 with: node-version: '24'
- uses: actions/download-artifact@v4 with: name: dist path: dist/
- name: Deploy to PR channel run: | CHANNEL_NAME="pr-${{ github.event.number }}" npm install -g @capgo/cli npx @capgo/cli channel create $CHANNEL_NAME --apikey ${{ secrets.CAPGO_TOKEN }} || true npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel $CHANNEL_NAME
- name: Comment PR uses: actions/github-script@v7 with: script: | github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: `🚀 This PR has been deployed to Capgo channel: \`pr-${{ github.event.number }}\`\n\nTo test this update in your app, configure it to use this channel. [Learn how to configure channels →](/docs/live-updates/channels/#configuring-the-channel-in-your-app)` })
deploy-production: if: github.ref == 'refs/heads/main' needs: build runs-on: ubuntu-latest environment: production steps: - uses: actions/setup-node@v6 with: node-version: '24'
- uses: actions/download-artifact@v4 with: name: dist path: dist/
- run: | npm install -g @capgo/cli npx @capgo/cli bundle upload --apikey ${{ secrets.CAPGO_TOKEN }} --channel productionCanaux de fonctionnalités de nettoyage
Section titled “Canaux de fonctionnalités de nettoyage”Nettoyer automatiquement les canaux de fonctionnalités lorsque les branches sont supprimées :
name: Cleanup Feature Channels
on: delete:
jobs: cleanup: runs-on: ubuntu-latest if: github.event.ref_type == 'branch' && startsWith(github.event.ref, 'feature/') steps: - uses: actions/setup-node@v6 with: node-version: '24'
- name: Delete Capgo channel run: | CHANNEL_NAME=$(echo "${{ github.event.ref }}" | sed 's/[^a-zA-Z0-9]/-/g' | tr '[:upper:]' '[:lower:]') npm install -g @capgo/cli npx @capgo/cli channel delete $CHANNEL_NAME --apikey ${{ secrets.CAPGO_TOKEN }} || trueSécurité et bonnes pratiques
Section titled “Sécurité et bonnes pratiques”Règles de protection de l’environnement
Section titled “Règles de protection de l’environnement”Configurez les règles de protection de l’environnement dans GitHub :
- Accédez à Paramètres → Environnements dans votre référentiel
- Créez des environnements :
development,staging,production - Pour l’environnement de production, ajoutez :
- Réviseurs requis : ajoutez des membres de l’équipe qui doivent approuver les déploiements
- Minuterie d’attente : Ajouter un délai avant le déploiement (facultatif)
- Branches de déploiement : restreindre à la branche
mainuniquement
Gestion des secrets sécurisés
Section titled “Gestion des secrets sécurisés”Utilisez des secrets spécifiques à l’environnement :
# Use different secrets per environmentdeploy-production: environment: production steps: - name: Deploy to Production run: | npx @capgo/cli bundle upload \ --apikey ${{ secrets.CAPGO_PROD_TOKEN }} \ --app ${{ secrets.CAPGO_PROD_APP_ID }} \ --channel productionSurveillance et notifications
Section titled “Surveillance et notifications”Intégration Slack
Section titled “Intégration Slack”Ajoutez des notifications Slack à votre flux de travail :
name: Deploy with Notifications
jobs: deploy: runs-on: ubuntu-latest steps: # ... deployment steps
- name: Notify Slack on Success if: success() uses: 8398a7/action-slack@v3 with: status: success text: '✅ Capgo deployment successful!' fields: repo,message,commit,author,action,eventName,ref,workflow env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Notify Slack on Failure if: failure() uses: 8398a7/action-slack@v3 with: status: failure text: '❌ Capgo deployment failed!' fields: repo,message,commit,author,action,eventName,ref,workflow env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}Intégration Discorde
Section titled “Intégration Discorde”Envoyer des notifications à Discord :
- name: Discord notification if: always() uses: Ilshidur/action-discord@master with: args: | Capgo deployment ${{ job.status }}! App: ${{ secrets.CAPGO_APP_ID }} Channel: ${{ github.ref_name }} Commit: ${{ github.sha }} env: DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}Notifications par e-mail
Section titled “Notifications par e-mail”Configurez les notifications par e-mail :
- name: Send email notification if: failure() uses: dawidd6/action-send-mail@v3 with: server_address: smtp.gmail.com server_port: 465 username: ${{ secrets.EMAIL_USERNAME }} password: ${{ secrets.EMAIL_PASSWORD }} subject: 'Capgo Deployment Failed - ${{ github.repository }}' to: team@yourcompany.com from: ci-cd@yourcompany.com body: | Deployment failed for ${{ github.repository }} Branch: ${{ github.ref_name }} Commit: ${{ github.sha }} Workflow: ${{ github.workflow }}Dépannage
Section titled “Dépannage”Flux de travail de débogage
Section titled “Flux de travail de débogage”Ajoutez des étapes de débogage pour résoudre les problèmes :
- name: Debug environment run: | echo "Node version: $(node --version)" echo "NPM version: $(npm --version)" echo "Working directory: $(pwd)" echo "Files in dist/: $(ls -la dist/ || echo 'No dist directory')" echo "Environment variables:" env | grep -E "(GITHUB_|CAPGO_)" | sort
- name: Test Capgo CLI run: | npx @capgo/cli --version npx @capgo/cli app debug --apikey ${{ secrets.CAPGO_TOKEN }} --app ${{ secrets.CAPGO_APP_ID }}Problèmes courants et solutions
Section titled “Problèmes courants et solutions”Le workflow échoue avec « CAPGO_TOKEN introuvable » :
- name: Verify secrets run: | if [ -z "${{ secrets.CAPGO_TOKEN }}" ]; then echo "ERROR: CAPGO_TOKEN secret is not set" exit 1 fi echo "CAPGO_TOKEN is set (length: ${#CAPGO_TOKEN})" env: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}Artéfacts de construction introuvables :
- name: Debug artifacts run: | echo "Checking for build artifacts..." ls -la dist/ || echo "No dist directory found" find . -name "*.js" -o -name "*.html" | head -10Problèmes de connectivité réseau :
- name: Test connectivity run: | ping -c 3 api.capgo.io || echo "Ping failed" curl -I https://api.capgo.io/health || echo "Health check failed"Flux de travail réutilisables
Section titled “Flux de travail réutilisables”Créez des flux de travail réutilisables pour assurer la cohérence entre les projets :
name: Reusable Capgo Deploy
on: workflow_call: inputs: environment: required: true type: string channel: required: true type: string secrets: CAPGO_TOKEN: required: true CAPGO_APP_ID: required: true
jobs: deploy: runs-on: ubuntu-latest environment: ${{ inputs.environment }} steps: - uses: actions/checkout@v6
- name: Setup Node.js uses: actions/setup-node@v6 with: node-version: '24' cache: 'npm'
- name: Install and build run: | npm ci npm run build
- name: Deploy to Capgo run: | npm install -g @capgo/cli npx @capgo/cli bundle upload \ --apikey ${{ secrets.CAPGO_TOKEN }} \ --app ${{ secrets.CAPGO_APP_ID }} \ --channel ${{ inputs.channel }}Utilisez le workflow réutilisable :
name: Deploy App
on: push: branches: [main, develop]
jobs: deploy-dev: if: github.ref == 'refs/heads/develop' uses: ./.github/workflows/reusable-capgo-deploy.yml with: environment: development channel: development secrets: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }} CAPGO_APP_ID: ${{ secrets.CAPGO_APP_ID }}
deploy-prod: if: github.ref == 'refs/heads/main' uses: ./.github/workflows/reusable-capgo-deploy.yml with: environment: production channel: production secrets: CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }} CAPGO_APP_ID: ${{ secrets.CAPGO_APP_ID }}Prochaines étapes
Section titled “Prochaines étapes”- Découvrez les Canaux pour gérer différents environnements de déploiement
- Explorez Custom Storage pour des scénarios de déploiement avancés
- Configurer Encryption pour des déploiements sécurisés
- Configurez [Comportement de mise à jour] (/docs/live-updates/update-behavior/) pour personnaliser la façon dont les mises à jour sont appliquées
Avec l’intégration de GitHub Actions, vous pouvez tirer parti de la puissante plateforme CI/CD de GitHub pour créer des workflows de déploiement sophistiqués avec des fonctionnalités intégrées de sécurité, de surveillance et de collaboration pour vos mises à jour en direct Capgo.