Passer à la navigation

Intégration CI/CD

En intégrant Capgo à votre pipeline CI/CD, vous pouvez automatiser pleinement le processus de construction et de déploiement de mises à jour de votre application. En exploitant les fonctionnalités de Capgo et CLI ainsi que semantic-release, vous pouvez vous assurer de déploiements cohérents et fiables et permettre une itération rapide.

  • L'automatisationAucune étape manuelle ou possibilité d'erreur humaine. Votre processus de construction, de test et de déploiement peut être entièrement automatisé de bout en bout.

  • Consistance: Chaque déploiement suit le même ensemble d'étapes, garantissant un processus prévisible et répétable. C'est particulièrement précieux lorsque vous avez plusieurs membres d'équipe contribuant code.

  • Réussite plus rapideAvec les déploiements automatisés, vous pouvez livrer des mises à jour plus fréquemment et avec confiance. Plus besoin d'attendre les approbations de QA ou de lancement.

The Capgo CLI is the key to integrating Capgo into your CI/CD workflow. It provides commands for pushing new bundle versions, managing channels, and more.

La commande la plus importante pour l'intégration CI/CD est bundle upload:

Fenêtre de terminal
npx @capgo/cli@latest bundle upload --channel Production --apikey YOUR_API_KEY

Si vous utilisez l'encryption, vous devez le fournir d'une des manières suivantes :

En utilisant le chemin d'accès d'une clé privée :

Fenêtre de terminal
npx @capgo/cli@latest bundle upload --channel Production --apikey YOUR_API_KEY --key-v2 PRIVATE_KEY_PATH

En utilisant le contenu de la clé privée directement (recommandé pour CI/CD) :

Fenêtre de terminal
npx @capgo/cli@latest bundle upload --channel Production --apikey YOUR_API_KEY --key-data-v2 PRIVATE_KEY_CONTENT

En utilisant les variables d'environnement (pratique recommandée pour CI/CD) :

Fenêtre de terminal
npx @capgo/cli@latest bundle upload --channel Production --apikey YOUR_API_KEY --key-data-v2 "$CAPGO_PRIVATE_KEY"

Configuration de variables d'environnement pour le chiffrement

Section intitulée « Configuration de variables d'environnement pour le chiffrement »

Pour les environnements CI/CD, il est recommandé de stocker votre clé privée en tant que variable d'environnement plutôt qu'en fichier. Voici comment la configurer :

  1. Obtenez le contenu de votre clé privée :

    Fenêtre de terminal
    cat .capgo_key_v2 | pbcopy

    Cela copie le contenu de la clé dans votre presse-papier.

  2. Y ajoutez-l’à votre environnement CI/CD :

    • GitHub Actions: Ajouter CAPGO_PRIVATE_KEY à vos secrets de repository
    • GitLab CI: Ajoutez-l’en tant que variable masquée dans vos paramètres de projet
    • CircleCI: Ajoutez-l’en tant que variable d'environnement dans vos paramètres de projet
    • Jenkins: Ajoutez-l’en tant que texte de credenciaux secret
  3. Utilisez-le dans votre pipeline :

    - run: npx @capgo/cli@latest bundle upload --channel=production --apikey=${{ secrets.CAPGO_API_KEY }} --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}"

Remarque: Le --key-data-v2 drapeau vous permet de passer le contenu de la clé privée directement sous forme de chaîne, ce qui le rend parfait pour les variables d'environnement dans les pipelines CI/CD où vous ne souhaitez pas créer de fichiers temporaires.

Cette commande télécharge la dernière mise à jour web dans le canal spécifié. Vous allez généralement exécuter cela en tant que dernier étape de votre pipeline CI/CD, après que votre mise à jour web ait été exécutée avec succès.

Alors que les étapes exactes varieront en fonction de votre outil CI/CD de choix, le processus général pour intégrer Capgo ressemble à ceci :

  1. Générez une clé API: Log in to the Capgo dashboard and create a new API key. This key will be used to authenticate the CLI in your CI/CD environment. Keep it secret and never commit it to your repository!

  2. Configurez la bundle upload Configurez laAjoutez une étape à votre configuration CI/CD qui exécute le bundle upload commande avec les arguments appropriés :

    commande
    - run: npx @capgo/cli@latest bundle upload --channel=production --apikey=${{ secrets.CAPGO_API_KEY }}
    upload.yml Production avec le canal que vous souhaitez déployer. ${{ secrets.CAPGO_API_KEY }} avec la variable d'environnement contenant votre clé API, et ajoutez --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}" si vous utilisez l'encryption.

  3. Ajoutez le upload étape suivante après votre build webAssurez-vous que le upload step comes after your web build has completed successfully. This ensures you’re always deploying your latest code.\n Here’s an example configuration for GitHub Actions:\n

    upload.yml
    name: Deploy to Capgo
    on:
    push:
    branches: [main]
    jobs:
    deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v6
    - uses: actions/setup-node@v6
    with:
    node-version: '24'
    - run: npm ci
    - run: npm run build
    - run: npm install -g @capgo/cli
    - run: npx @capgo/cli@latest bundle upload --channel=production --apikey=${{ secrets.CAPGO_API_KEY }} --key-data-v2 "${{ secrets.CAPGO_PRIVATE_KEY }}"

Gestion de version avec semantic-release

Gestion de version avec semantic-release

La méthode recommandée pour gérer la version avec Capgo est de définir la version dans votre capacitor.config.ts importez le fichier en le chargeant à partir de package.json:

import pkg from './package.json'
const config: CapacitorConfig = {
// ... other config
plugins: {
CapacitorUpdater: {
version: pkg.version,
}
}
}

Cette approche vous permet de:

  1. Utiliser semantic-release (ou tout autre outil) pour mettre à jour la package.json version
  2. Construire votre application avec la version mise à jour automatiquement incluse
  3. Télécharger le bundle avec la version correcte

Votre flux de CI/CD ressemblerait à ceci:

- run: npm ci
- run: npx semantic-release # Updates package.json version
- run: npm run build # Builds with new version from capacitor.config
- run: npx @capgo/cli@latest bundle upload --channel=production --apikey=${{ secrets.CAPGO_API_KEY }}

Voici un exemple .releaserc de fichier de configuration pour semantic-release:

{
"branches": [
"main",
{
"name": "beta",
"prerelease": true
}
],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
[
"@semantic-release/git",
{
"assets": ["CHANGELOG.md", "package.json"],
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}
]
]
}

Cette configuration fait les choses suivantes:

  1. Analyse les messages de commit pour déterminer le prochain numéro de version, en suivant la spécification Conventional Commits.
  2. Génère des notes de version basées sur les commits depuis la dernière version.
  3. Mise à jour du CHANGELOG.md Fichier avec les nouvelles notes de version.
  4. Mise à jour du package.json version, qui sera prise en charge par votre capacitor.config.
  5. Commite les mises à jour du CHANGELOG.md, package.json, ainsi que tout autre fichier modifié, vers le dépôt.

Assurez-vous d'avoir exécuté semantic-release avant de construire votre application afin que la version mise à jour de package.json est inclus dans votre build via le capacitor.config.

Mise à jour automatique lorsque la version locale est déjà à Capgo

Mise à jour automatique lorsqu'une version locale est déjà à Capgo

Les noms de bundle doivent être uniques (les versions supprimées occupent toujours leur nom). Si CI continue à télécharger la même package.json version, l'upload échoue. Préférez l'incrémentation package.json par exemple avec semantic-release). Lorsque cela n'est pas pratique, laissez le CLI choisir la prochaine version semver gratuite du canal lié au bundle, ou sinon la dernière version d'application distante :

Fenêtre de terminal
npx @capgo/cli@latest bundle upload --channel=production --auto-bump
npx @capgo/cli@latest bundle upload --auto-bump major
npx @capgo/cli@latest bundle upload --auto-bump minor # default when the flag has no value
npx @capgo/cli@latest bundle upload --auto-bump patch # alias: fix
npx @capgo/cli@latest bundle upload --auto-bump metadata
npx @capgo/cli@latest bundle upload --channel=production --auto-bump ai

--auto-bump ai utilise Capgo Cloudflare Workers AI pour comparer les fichiers de bundle local contre les fichiers delta précédents Capgo/canal, choisir major | minor | patch | metadataet imprime une brève raison. En l'absence de version précédente Capgo, l'IA est ignorée et l'incrémentation est patch.

Ne combinez pas --auto-bump avec --bundle / -bVoir la bundle upload référence pour la liste complète des options.

If you encounter issues with your Capgo CI/CD integration, here are a few things to check:

  • Clé APIAssurez-vous que votre clé API est valide et dispose des permissions nécessaires. Si vous utilisez une variable d'environnement, vérifiez qu'elle est correctement définie.

  • version CLIAssurez-vous d'utiliser la dernière version de la Capgo CLI. Les versions plus anciennes peuvent présenter des problèmes de compatibilité ou manquer certaines fonctionnalités.

  • Artéfacts de construction: Vérifiez que votre build web génère les fichiers de sortie attendus. Le Capgo CLI nécessite un build web valide pour créer un bundle.

  • Connexion réseauVérifiez que votre environnement CI/CD a accès au réseau vers les serveurs Capgo. Des problèmes de pare-feu ou de proxy peuvent parfois entraver le processus. upload commande.

Si vous rencontrez toujours des difficultés, contactez le support Capgo pour obtenir de l'aide. Ils peuvent vous aider à résoudre les problèmes liés à votre configuration spécifique.

Intégrer Capgo dans votre pipeline CI/CD avec une gestion de version appropriée peut considérablement simplifier votre flux de travail de développement. En automatisant vos déploiements et en versionnant à l'aide de l'approche capacitor.config, vous pouvez livrer des mises à jour plus rapidement et avec plus de confiance.

La méthode recommandée consiste à définir la version dans votre capacitor.config.ts fichier et à utiliser semantic-release pour mettre à jour package.json ce qui fournit un processus de déploiement robuste et fiable qui vous permet de vous concentrer sur la création de grandes fonctionnalités plutôt que de vous soucier des étapes de libération manuelles.

Pour plus de détails sur les commandes et les options Capgo CLI, consultez la documentation de référence CLI.Et pour une approfondie de la configuration de semantic-release, consultez les docs de semantic-release..

Joyeux déploiement !

Si vous utilisez Intégration CI/CD planifier l'automatisation de CI/CD, la connecter avec Capgo CI/CD pour le flux de travail du produit dans Capgo CI/CD, pour le flux de travail du produit dans Capgo Intégration CI/CD, pour le flux de travail du produit dans les builds natives Capgo pour le flux de travail du produit dans Capgo Constructions natives, pour le flux de travail du produit dans Capgo Intégrations, GitHub Actions Integration pour les détails d'implémentation dans GitHub Actions Integration, et Intégration CI/CD de GitLab pour les détails d'implémentation dans Intégration CI/CD de GitLab.