Projets

Un projet décrit l’environnement de développement — image, features, extensions, dépôts et commandes de cycle de vie.

Un projet est le modèle d’un environnement de développement. Il définit tout ce qu’une sandbox doit contenir : l’image Docker de base, les features devcontainer, les extensions de l’IDE, les dépôts à cloner et les commandes de cycle de vie à lancer.

Chaque sandbox et chaque tâche part d’un projet. Plusieurs sandboxes peuvent partager le même projet — chaque membre a sa propre machine isolée.

ChampDescription
imageImage Docker de base (p. ex. mcr.microsoft.com/devcontainers/base:ubuntu-22.04)
featuresFeatures devcontainer à installer (Node.js, Docker-in-Docker, Python, etc.)
vscodeExtensionsIdentifiants d’extensions de l’IDE (Open VSX) à préinstaller
repositoriesDépôts GitHub à cloner dans /workspace/ au premier démarrage
postCreateCommandCommande shell lancée une fois, après la création de la sandbox
postStartCommandCommande shell lancée à chaque démarrage de la sandbox
forwardPortsPorts à exposer (facultatif — les ports sont aussi ouverts à la demande)

Les projets sont compatibles avec la spécification devcontainer. Si votre projet a déjà un .devcontainer/devcontainer.json, vous pouvez en importer les réglages directement dans la configuration du projet Spunto.

Les features sont installées par les scripts d’installation OCI officiels — le mécanisme défini par la spécification Dev Container.

Chaque modification d’un projet crée un instantané de version immuable. Le numéro de la version courante est affiché dans la barre latérale sous la forme v{n}.

Une sandbox lancée sur une version plus ancienne du projet l’indique. La reconstruire (POST .../sandboxes/:id/rebuild) la recrée à la version courante du projet.

L’historique complet des versions se consulte depuis la page du projet, et toute version précédente peut y être restaurée. Restaurer crée une nouvelle version — rien n’est modifié en place.

Note

Les clés de déploiement SSH et les détails d’infrastructure ne sont pas versionnés — seule la configuration de l’environnement (image, features, extensions, dépôts, commandes de cycle de vie) entre dans l’instantané.

Si vous connectez une GitHub App, Spunto peut :

  • Cloner des dépôts privés dans les sandboxes avec des clés de déploiement SSH propres à chaque projet (en lecture seule par défaut)
  • Injecter GITHUB_TOKEN et configurer ~/.git-credentials pour les remotes HTTPS
  • Écrire vos credentials git personnels (clé SSH enregistrée sur votre compte GitHub) pour git push

Astuce

Les clés de déploiement sont créées automatiquement sur le dépôt GitHub et stockées chiffrées en base. Elles sont supprimées avec le projet.