Passer au contenu principal

Configuration de l'environnement pour les applications modernes

Master environment configuration for Capacitor and Electron apps. Compare 12-factor, runtime config, and secret management patterns

Configuration de l'environnement pour les applications modernes

You’ve shipped the release, signed the native binary, and watched the production rollout start normally. Then support reports that users can’t complete a purchase. The crash log looks unrelated, so you spend hours tracing requests, plugin initialization, and recent JavaScript changes. The cause turns out to be a staging API URL left in a rushed production build.

Cette défaillance n'est pas anormale. Configuration de l'environnement est la discipline de garder les paramètres spécifiques à la mise en production, comme les API points de terminaison, les drapeaux de fonctionnalité, les informations de base de données et les clés de tiers, séparés de l'application code. Dans les applications Capacitor et Electron, la séparation est plus difficile car les actifs web sont emballés à l'intérieur de conteneurs natifs, donc une erreur de configuration peut devenir partie d'un artefact signé plutôt qu'une valeur que vous pouvez modifier sur le serveur.

Le problème plus profond est la dérive de la configuration, la divergence progressive entre le développement, la mise en ligne et la production. Un développeur met à jour un fichier, un ingénieur de lancement change une variable CI, et une mise en production mobile conserve une valeur plus ancienne à l'intérieur de son bundle. L'application compile toujours, mais les environnements ne représentent plus le même système. Les équipes qui comprennent les .env differences entre le développement et la production dans les applications __CAPGO_KEEP_0__ differences between development and production in Capacitor apps La question pratique est simple : comment pouvez-vous envoyer le même codebase dans plusieurs environnements sans devoir reconstruire, ré-signer ou soumettre une application native pour chaque changement de configuration ?

Table des matières

Pourquoi la configuration de l'environnement casse les applications de production

Pourquoi la configuration d'environnement brise les applications de production

Les bugs de configuration les plus coûteux sont rarement des bugs de configuration. Une mauvaise adresse URL de base API peut ressembler à une erreur d'authentification, un écran de compte vide, une erreur de paiement ou une panne de plugin natif. Lorsque l'incident atteint l'ingénieur qui gère la pipeline de construction, l'erreur originale peut être enfouie sous plusieurs commits et une soumission de magasin réussie.

Les applications hybrides ont un modèle de panne particulier. Capacitor compile une application web et place ses actifs à l'intérieur d'un projet iOS ou Android. Les packages Electron emballent les code de processus de rendu et principal dans une application de bureau. Si une fin de pointe ou une étiquette de fonctionnalité est résolue pendant cette construction, la valeur résultante voyage avec l'artefact. La modifier ultérieurement signifie généralement produire un nouveau bundle, le signer à nouveau et le distribuer par le canal applicable.

Le dérive commence avec des exceptions sans danger

Le dérive de configuration grandit à partir de raccourcis raisonnables :

  • Un surcroît local : Un développeur inscrit un point de terminaison de test pour débloquer une fonctionnalité et l'oublie de supprimer.
  • Une variable de pipeline séparée : Les CI utilisent une valeur de production qui ne correspond pas à la configuration documentée du référentiel.
  • Un paramètre natif uniquement : Android, iOS et Electron reçoivent des identifiants de plugin ou des paramètres de rappel différents.
  • Un drapeau non documenté : Les modifications des opérations modifient directement une bannière de fonctionnalité dans un système de déploiement, tandis que la mise en scène continue d'utiliser le comportement ancien.

Chaque choix peut fonctionner en isolation. Le problème commence lorsque personne ne peut répondre à laquelle de la valeur est autoritaire, quelle est l'environnement qui l'possède, et quand il a changé pour la dernière fois.

Règle pratique : Si une valeur de configuration peut changer indépendamment de la logique de l'application, traitez-la comme une entrée de déploiement, et non comme une source code.

Un environnement de mise en scène devrait ressembler suffisamment à la production pour exposer les problèmes d'intégration, tout en utilisant des points de terminaison isolés, des identifiants et des données.

Lorsque les environnements divergent, la mise en scène cesse d'être une répétition utile. Une mise en production peut passer tous les tests contre un ensemble d'hypothèses et échouer immédiatement contre un autre.

La configuration en temps de construction crée une bouteille d'embouteillage de mise en production : 

Supposons qu'une production API se déplace vers un nouveau point de terminaison. Avec un flux de travail traditionnel Capacitor, l'équipe modifie la valeur, construit les actifs web, synchronise les projets natifs, signe l'application et la distribue à travers le processus de publication de la plateforme. Les équipes Electron affrontent un cycle similaire lorsque la valeur modifiée appartient à l'application empaquetée.

Cet flux de travail est acceptable pour une mise en production délibérée. C'est une réponse déplorable à une correction de configuration urgente. Le binaire peut être en bonne santé, le JavaScript peut être inchangé et pourtant une seule chaîne force un cycle de livraison complet.

La conception plus sûre sépare trois couches :

  1. La logique d'applicationqui doit rester identique dans les différents environnements.
  2. La configuration de l'environnementqui sélectionne les points de terminaison, les drapeaux et le comportement d'exécution non sensible.
  3. Le matériau secretqui doit être stocké dans un emplacement contrôlé et injecté uniquement lorsque nécessaire.

Cette séparation rend la dérive visible. Cela donne également à l'équipe une réponse claire lorsque la production se comporte différemment : comparez les entrées de configuration avant de blâmer la code.

La comparaison des quatre modèles de configuration principaux

L'application hybride n'a pas de modèle de configuration unique qui convienne à toutes ses parties. Un backend peut lire les variables d'environnement au démarrage, tandis qu'un Capacitor rendu peut ne pas avoir de processus de serveur traditionnel. Electron ajoute une autre frontière entre le processus principal et le rendu. La bonne choix dépend de savoir si une valeur est publique, sensible, modifiable après la mise en production ou requise par les outils de construction natifs.

Le modèle 12-Factor traite la configuration comme une entrée spécifique à l'environnement plutôt que comme un état d'application fixe. Cela fonctionne naturellement pour les processus de serveur, les conteneurs et les tâches CI. Un service peut lire ses valeurs au démarrage et utiliser le même artefact dans plusieurs déploiements.

Les applications côté client compliquent le modèle. Une valeur référencée par le JavaScript du navigateur doit être disponible à terme au client, elle ne doit donc pas être traitée comme un secret uniquement parce qu'elle est arrivée par une variable d'environnement. Un origine ou un drapeau de fonction publique __CAPGO_KEEP_0__ peut utiliser la substitution en temps de construction, mais les informations d'identification avec des privilèges significatifs ne doivent pas être expédiées dans un bundle client réversible.

Pour API et Electron, ce modèl’est le meilleur pour

For Capacitor and Electron, this pattern is best for et non pour protéger les secrets. Il a un faible surcoût conceptuel, mais la mutabilité en temps d'exécution est limitée à moins qu'une autre couche de livraison existe.Le modèle 12-Factor traite la configuration comme une entrée spécifique à l'environnement plutôt que comme un état d'application fixe. Cela fonctionne naturellement pour les processus de serveur, les conteneurs et les tâches CI. Un service peut lire ses valeurs au démarrage et utiliser le même artefact dans plusieurs déploiements.

Les applications côté client compliquent le modèle. Une valeur référencée par le JavaScript du navigateur doit être disponible à terme au client, elle ne doit donc pas être traitée comme un secret uniquement parce qu'elle est arrivée par une variable d'environnement. Un origine ou un drapeau de fonction publique __CAPGO_KEEP_0__ peut utiliser la substitution en temps de construction, mais les informations d'identification avec des privilèges significatifs ne doivent pas être expédiées dans un bundle client réversible.

Les équipes maintiennent souvent des profils de construction de développement, de mise en scène et de production. Chaque profil sélectionne son propre point de terminaison, son identifiant d'application, ses fichiers de service natifs et ses drapeaux de fonctionnalité. Cette approche est facile à expliquer et fonctionne avec les exigences du plateau.

Sa faiblesse est la divergence des artefacts. Trois builds peuvent contenir un comportement différent, non seulement des paramètres différents, surtout lorsque la compilation conditionnelle ou les scripts spécifiques au plateau pénètrent dans la chaîne de production. Chaque changement de configuration crée un autre build et peut déclencher la signature, la notarisation, le traitement de magasin ou la coordination de libération manuelle.

Le retour en arrière est également lié à la distribution des artefacts. Vous pouvez revenir à une version binaire plus ancienne, mais les utilisateurs peuvent déjà avoir des versions différentes installées, et le chemin de retour en arrière dépend du canal de distribution.

Modèle trois, configuration en temps de exécution

La configuration en temps d'exécution déplace les valeurs mutables à l'extérieur de l'artefact natif. L'application récupère un document de configuration lors du lancement ou lit un document local mis en cache qui a été livré précédemment. Cela permet aux équipes de corriger les points de terminaison et les drapeaux sans modifier l'application code.

Le compromis est une nouvelle dépendance de démarrage. Si le service de configuration distant est indisponible, l'application nécessite une cache sûr, un temps limite borné et une politique de retrait connue. Un retrait ne doit jamais pointer vers un environnement incorrect. Validez le schéma du document, authentifiez sa source si nécessaire et enregistrez la version de configuration appliquée par l'application.

Pour les applications hybrides, ce modèl’est généralement le plus flexible pour les valeurs non confidentielles. Il nécessite cependant une prise en compte soignée du comportement hors ligne car les utilisateurs mobiles peuvent lancer une application sans connexion réseau.

Le modèle quatre, gestion des secrets dédiés

Les plateformes telles que HashiCorp Vault et AWS Secrets Manager sont conçues pour contrôler les données sensibles du backend. Elles supportent les politiques d'accès, les traçages d'audit, l'encryption et les workflows de rotation. Cela les rend appropriées pour les services côté serveur qui peuvent s'authentifier auprès du magasin de secrets sans exposer les informations d'identification aux utilisateurs.

Ils n'abordent pas le problème du secret client. Un secret livré à un client mobile ou de bureau peut généralement être inspecté par la personne qui possède l'appareil. Les applications clientes devraient recevoir uniquement des valeurs qui sont sûres à divulguer, tandis que les opérations privilégiées restent derrière un backend.

Le modèle Complexité de construction Besoin de réabonnement de stockage Vitesse de reversion Meilleur pour
Variables 12-Factor Basse pour les serveurs, modérée pour les builds hybrides D'habitude, pour les valeurs de clients encapsulées Modéré Services back-end et entrées de construction publiques
Constructions par environnement Élevé à mesure que les environnements se multiplient Oui, lorsque les valeurs bundlées changent Lent à modéré Petites équipes avec des mises à jour occasionnelles
Configuration en temps d'exécution Modéré Non pour les modifications de la couche web compatible Rapide, avec des payloads versionnés Points de terminaison, drapeaux et comportement client changeants
Plateformes de gestion des secrets Élevé à très élevé Non pour les secrets back-end uniquement Rapide pour les consommateurs de serveur Credentials de serveur privilégiés

Les équipes travaillant sur une seule application avec des mises à jour occasionnelles peuvent commencer par des builds par environnement plus des validations strictes. Une équipe en croissance avec des travaux de mise en scène et de production parallèles nécessite un niveau d'exécution pour réduire la divergence des artefacts. Une équipe à haute cadence doit combiner des bundles d'application immuables, une configuration de runtime et un gestionnaire de secrets pour les credentials back-end. Le guidance d'implémentation des drapeaux de fonction pour Capacitor s'insère dans ce niveau d'exécution, à condition que les drapeaux soient scoping, audités et sûrs à exposer au client.

Conséquences de sécurité et CI/CD que vous ne pouvez pas ignorer

Une valeur de configuration n'est pas automatiquement sûre parce qu'elle provient de CI. Le moment où une valeur entre dans un bundle client, un ressource native, un archive Electron, un fichier de journal, un rapport de panne ou un sauvegarde de dispositif, suppose que quelqu'un avec accès à cet artefact peut l'inspecter.

Les identifiants publics et les paramètres côté client sont différents des secrets. Une clé mobile API qui ne fait que l'identifier une application peut être acceptable dans un bundle si le fournisseur l'y attend et restreint son utilisation. Un credential de base de données, un secret de signature, un jeton privilégié ou un credential de service non restreint n'est pas sûr dans le même endroit. OWASP SAMM recommande de séparer les tâches ou de chiffrer les secrets de production, en empêchant les secrets non protégés d'entrer dans les dépôts et en gérant leur cycle de vie plutôt que d'attendre un incident.

Avec un diagramme illustrant trois étapes de risques de sécurité impliquant des secrets fixés dans les pipelines CI/CD et de déploiement.

Où les pipelines dévoilent la configuration.

Les systèmes CI/CD échouent de manière banale. Une commande shell imprime une variable élargie, une construction échouée inclut un secret dans une exception, ou une étape de débogage archivera un dump d'environnement. Un fichier peut également entrer dans le contrôle de version en raison d'un dépôt héritant d'un projet incomplet. .env.production Utilisez un magasin sécurisé pour les valeurs sensibles et maintenez les permissions du pipeline étroites. La tâche de construction devrait recevoir uniquement les valeurs requises pour ce cible, et les journaux devraient les masquer. Examinez les fichiers JavaScript générés, les ressources natives, les archives Electron et les cartes de sources pour une inclusion accidentelle. Un checksum ou une signature sur un payload de configuration livré à distance peut aider à détecter une manipulation, mais cela ne transforme pas une valeur visible par le client en secret. .gitignore.

Les équipes gérant les données d'analytique ou d'autres données sensibles peuvent utiliser un ressource séparée comme le document de sécurité de ELECTE sur l'analytique AI.

En revanche, lors de la revue des responsabilités plus larges de protection des données. La sécurité doit coexister avec la vitesse de mise en production. Le diagramme montre trois étapes de risques de sécurité impliquant des secrets fixés dans les pipelines CI/CD et de déploiement.

Où les pipelines dévoilent la configuration.

Le modèle sécurisé pour un secret de production est le stockage contrôlé, l'encryption en transit et au repos, l'accès à privilège le moins élevé, et la rotation.

Ne mettez pas les informations d'identification privilégiées dans Capacitor ou Electron code pour éviter un aller-retour backend. Ne vous fiez pas à l'obfuscation, à la minification ou à une variable de rendu cachée. Ces techniques rendent l'inspection occasionnelle plus difficile, mais elles ne changent pas le modèle de confiance d'un appareil client.

Un pipeline pratique sépare les responsabilités :

  • Contrôle de version : Commitez des schémas de configuration et des exemples sûrs, jamais des secrets en direct.
  • Étape de construction : Injectez uniquement les valeurs requises pour produire l'artefact, et empêchez l'expansion des secrets dans les journaux.
  • Étape de livraison : Appliquez des bundles de runtime spécifiques à l'environnement à travers un canal authentifié et observable.
  • Étape de rotation : Révoquez et remplacez les informations d'identification backend sur un horaire défini, avec un chemin d'incident pour l'invalidation immédiate.

Le Pratiques de gestion des secrets CI/CD pour les équipes Capacitor Les pratiques de gestion des secrets CI/CD sont les plus utiles lorsqu'elles sont associées à une inventaire explicite. Pour chaque variable, documentez si elle est publique ou sensible, qui en est le propriétaire, dans quelles environnements elle est utilisée et si son changement nécessite une reconstruction native.

Implémenter la configuration d'environnement dans Capacitor et Electron

Un setup maintenable commence par un contrat de configuration unique, et non par une pile de conditionnels spécifiques au framework. Gardez les entrées d'environnement sécurisées dans des fichiers prévisibles, chargez-les à travers le système de build et exposez-les à l'application code à travers un petit service typé.

Un plan de répertoire de dépôt fonctionnel ressemble à ceci :

.env
.env.staging
.env.production
.env.example
src/config/
  schema.ts
  config-service.ts
capacitor.config.ts
electron/
  main.ts
  preload.ts

Seul .env.example le doit être inclus dans le contrôle de version. Les autres fichiers doivent être ignorés et le CI doit fournir les valeurs pour chaque cible. Les fichiers peuvent contenir des points de terminaison publics et des drapeaux de fonctionnalité, mais les informations de connexion backend sensibles doivent rester dans un magasin de secrets dédié et ne jamais devenir partie du bundle client.

Définissez et validez un contrat unique

Avec Vite, les variables exposées au client utilisent normalement le VITE_ préfixe. Ce préfixe est un signal de visibilité, et non une frontière de sécurité.

// src/config/schema.ts
export type AppConfig = {
  apiBaseUrl: string
  enableNewCheckout: boolean
  environment: 'development' | 'staging' | 'production'
}

function required(name: string, value: string | undefined): string {
  if (!value) {
    throw new Error(`Missing required configuration: ${name}`)
  }
  return value
}

export function loadConfig(): AppConfig {
  const environment = required('VITE_APP_ENV', import.meta.env.VITE_APP_ENV)

  if (!['development', 'staging', 'production'].includes(environment)) {
    throw new Error(`Unsupported environment: ${environment}`)
  }

  return {
    apiBaseUrl: required('VITE_API_BASE_URL', import.meta.env.VITE_API_BASE_URL),
    enableNewCheckout: import.meta.env.VITE_ENABLE_NEW_CHECKOUT === 'true',
    environment: environment as AppConfig['environment'],
  }
}

Appeler loadConfig() context : fragment de texte HTML provenant d'une chaîne de Capgo UI (clé parente `appflow_migration_step2`). Page/zone : Comparaison et migration d'Appflow. Rôle : Copie de site web. Vu dans : page ionic-appflow.astro. Préservez les termes de produit/branche et les termes de développeur de Capgo exactement. Clé de message `appflow_migration_step2` (Étape 2 de la migration d'Appflow).

Pour le travail local, Vite peut sélectionner le fichier approprié avec son mode. Une mise en production peut utiliser .env.stagingalors qu'une mise en production utilise .env.production. Le job CI doit définir le mode explicitement au lieu d'hériter de ce que le développeur a utilisé localement.

Capacitor configuration native

Les projets natifs ont souvent besoin d'identifiants, de fichiers de service ou de paramètres de plugin spécifiques à l'environnement. Conservez ces valeurs dans capacitor.config.tsmais évitez de placer les informations de connexion privées là.

// capacitor.config.ts
import type { CapacitorConfig } from '@capacitor/cli'

const isProduction = process.env.APP_ENV === 'production'

const config: CapacitorConfig = {
  appId: isProduction ? 'com.example.app' : 'com.example.app.staging',
  appName: isProduction ? 'Example' : 'Example Staging',
  webDir: 'dist',
  plugins: {
    PushNotifications: {
      presentationOptions: ['badge', 'sound', 'alert'],
    },
  },
}

export default config

Les fichiers Firebase, les certificats de notification push et les identifiants de plateforme devraient être sélectionnés par la chaîne de construction native et stockés avec des contrôles d'accès appropriés. L'application de production ne devrait jamais réutiliser les informations de connexion de service de la mise en production car les deux builds se compilent simultanément.

Le Capacitor guide de configuration de l'environnement local peut aider les équipes à standardiser les modes locaux, mais le dépôt nécessite toujours un contrat explicite et une validation CI.

Electron nécessite une frontière de processus

Le rendu d'Electron n'est pas le même que le processus principal Node.js. Dans une application renforcée, process.env peut être disponible dans le processus principal mais indéfini ou intentionnellement non disponible dans le rendu. Passer uniquement la configuration sécurisée par un pont de préchargement.

// electron/main.ts
import { app, BrowserWindow } from 'electron'
import path from 'node:path'

function createWindow() {
  const window = new BrowserWindow({
    webPreferences: {
      preload: path.join(__dirname, 'preload.js'),
      contextIsolation: true,
      nodeIntegration: false,
    },
  })

  const safeConfig = {
    apiBaseUrl: process.env.API_BASE_URL,
    environment: process.env.APP_ENV,
  }

  window.webContents.on('did-finish-load', () => {
    window.webContents.send('app-config', safeConfig)
  })

  return window
}

app.whenReady().then(createWindow)
// electron/preload.ts
import { contextBridge, ipcRenderer } from 'electron'

contextBridge.exposeInMainWorld('appConfig', {
  get: () => new Promise((resolve) => {
    ipcRenderer.once('app-config', (_event, config) => resolve(config))
  }),
})

Valider à nouveau l'objet dans le rendu. Le pont devrait exposer uniquement les valeurs de runtime publiques, jamais un jeton de stockage secret ou une capacité de système de fichiers privilégiée.

Aspect Capacitor Electron
Limite de configuration principale Projet natif et actifs web embarqués Processus principal, préchargement et rendu
Valeurs client sécurisées Points de terminaison et drapeaux publics Points de terminaison et drapeaux publics passés par préchargement
Credenciaux sensibles Évitez-les dans le bundle de l'application Évitez-les dans l'archive de l'archive
Échec commun Valeurs de construction obsolètes après synchronisation native process.env indisponible dans le rendu
Chemin d'actualisation de temps d'exécution Bundle web signé ou configuration distante Bundle web signé ou mise à jour d'application contrôlée

La plus grande erreur de mise en œuvre est de supposer .env Les fichiers sont automatiquement privés. Un bundler peut inclure leurs valeurs dans le JavaScript généré, et une étape de packaging peut inclure les fichiers eux-mêmes. Inspectez l'artefact final, et non seulement l'arbre source.

Simplification des mises à jour ciblées et des retours en arrière avec Capgo

Même un setup discipliné au moment de la construction laisse un écart opérationnel difficile. Si un point de terminaison public change après la mise en production, l'application native peut toujours contenir la valeur ancienne. Rebuilder et distribuez un nouveau binaire est excessif lorsque le changement requis affecte uniquement la couche web.

le modèle d'actualisation en direct de Capgo comble cette lacune avec des canaux ciblés pour les niveaux de déploiement tels que le développement, le stade et la production. Une équipe peut publier un bundle de JavaScript signé, CSS, de configuration ou de ressources à la chaîne qui correspond à l'environnement affecté. Le shell natif reste installé tandis que l'application applique l'actualisation compatible lors de son prochain lancement.

Un tableau de comparaison montrant les workflows de configuration traditionnels des applications par rapport aux mises à jour instantanées et aux retours en arrière utilisant la plateforme Capgo.

Considérez un point de terminaison de production API qui change inopinément. L'équipe peut mettre à jour la source de configuration, construire le bundle web et le publier à la chaîne de production au lieu de attendre une mise à jour native du magasin. La frontière importante reste intacte : cette approche ne contourne pas les règles de la plateforme pour les code natifs et elle ne rend pas un secret sûr à envoyer. Elle réduit cependant le temps nécessaire pour corriger la configuration compatible de la couche web.

Les canaux rendent l'appartenance à l'environnement explicite

Une chaîne devrait correspondre à un environnement, et non à la préférence d'un développeur individuel. Les testeurs de développement reçoivent du contenu de développement, les utilisateurs de stade reçoivent du contenu de stade et les utilisateurs de production ne reçoivent que le bundle approuvé pour la production. Le CI peut publier le bundle approprié après les étapes de construction et de validation correspondantes.

La réversion est également importante. Si la nouvelle configuration pointe vers un service malade, l'opérateur de mise en production devrait pouvoir sélectionner le précédent bundle connu-good pour ce canal. L'historique de version, les garde-fous de déploiement et les rapports au niveau de l'appareil aident l'équipe à déterminer si l'incident est généralisé ou limité à un segment de déploiement.

Le résultat est un chemin de promotion plus clair :

  1. Construire et valider le bundle pour le développement.
  2. Promouvoir le même contenu testé vers la mise en scène.
  3. Approuver la mise à jour du canal de production.
  4. Surveiller l'adoption et les échecs.
  5. Révertir le canal si la configuration se comporte de manière incorrecte.

Cette procédure réduit l'envie de créer des builds natifs d'urgence pour chaque correction de point final. Le Capgo contrôle de version et le flux de réversion sont particulièrement pertinents pour les équipes qui ont besoin de lancements spécifiques à l'environnement sans perdre une traceable histoire.

Votre checklist d'audit de la configuration de l'environnement

Exécutez cet audit avant chaque lancement majeur et après toute modification de pipeline.

  • Inspecter les artefacts : Confirmer qu'aucun secret n'apparaît dans les fichiers commités, les ressources JavaScript générées, les ressources natives, les cartes de sources ou les archives Electron.
  • Environnements séparés : Vérifier que le développement, la mise en ligne et la production utilisent des points de terminaison, des identifiants et des clés approuvées distincts.
  • Protéger les entrées : Vérifier que chaque .env variant est ignoré, tandis que .env.example documente le schéma requis.
  • Examiner la CI : Confirmer que les pipelines injectent des valeurs provenant de magasins contrôlés plutôt que de s'appuyer sur la machine locale d'un développeur.
  • Tester la récupération : Vérifier que la configuration de temps d'exécution faille rapidement lorsque la valeur requise manque et que l'on peut effectuer un roulage vers une mise à jour compatible sans reconstruire la coquille native.

Audit Checklist d'environnement pour la configuration : 5 étapes pour des pratiques de déploiement sécurisé de logiciels.

Seul l'audit est complet lorsque quelqu'un peut identifier le propriétaire, la source, la portée et la procédure de reversion pour chaque valeur de configuration de production.


Capgo fournit des mises à jour en direct signées pour les applications CapacitorJS et Electron, y compris des canaux ciblés et des reprises de version pour les modifications de JavaScript, CSS, de configuration et de biens. Si votre équipe souhaite réduire les cycles de reconstruction tout en gardant les mises à jour de l'environnement sous contrôle, visitez Capgo et l'évaluez en parallèl’avec votre processus CI/CD existant.

Mises à jour en direct pour les applications Capacitor

Lorsqu'un bug de couche web est en direct, expédiez la correction par le biais de Capgo au lieu d'attendre des jours pour l'approbation de la boutique d'applications. Les utilisateurs reçoivent la mise à jour en arrière-plan tandis que les modifications natives restent dans la voie de revue normale.

Soutien humain de Martin

Démarrer maintenant

Dernières actualités de notre Blog

Capgo vous donne les meilleures informations dont vous avez besoin pour créer une application mobile vraiment professionnelle.