Utiliser Lite

Projets

La spécification dont un espace de travail est construit — image, features, extensions, dépôts, hooks, ports — et le fonctionnement des versions, des modèles et de l’export.

Un projet décrit un environnement, dans le vocabulaire de la spécification devcontainer : quoi construire, quoi cloner, quoi exécuter. Chaque worker du projet est construit à partir de lui. Le formulaire est découpé en pages — les mêmes que dans Spunto Cloud :

Page Contient
General nom et description, image de base, dépôts
Tooling features devcontainer, extensions VS Code
Lifecycle postCreateCommand, postStartCommand
Runtime ports nommés, Docker dans l’espace de travail, volumes partagés
Agents la façon dont s’exécutent les tâches déléguées, et les serveurs MCP qu’elles reçoivent
Secrets les secrets du projet

Image de base

N’importe quelle image que Docker peut récupérer : une image devcontainer, une image officielle de langage, ou la vôtre. L’image de l’espace de travail est votre image de base plus deux features devcontainer que Lite ajoute toujours en premier — common-utils (un utilisateur vscode, un shell, l’essentiel) et spunto-pack (code-server, dtach, l’agent) — puis les features que vous déclarez.

Les images d’un Google Artifact Registry ou GCR privé se récupèrent avec une clé de compte de service renseignée dans Settings → Container registry (rôle roles/artifactregistry.reader). Les autres registres privés exigent que le Docker de l’hôte y soit connecté.

Features et extensions

Les features sont des features devcontainer choisies dans un catalogue (Node, Python, Go, Docker-in-Docker, la CLI GitHub…), chacune avec ses options et une version facultative. Elles sont installées dans l’image, dans l’ordre, au moment du build.

Les extensions sont des identifiants d’extensions VS Code (dbaeumer.vscode-eslint), recherchés par défaut sur Open VSX et préinstallés dans l’image. Pour utiliser une autre galerie, voir Configuration.

Dépôts

Un dépôt est une URL de clonage, exactement telle que git clone l’accepte — SSH (git@gitlab.example.com:team/app.git) ou HTTPS — plus l’emplacement où le cloner sous /workspace. Il n’y a aucune intégration de forge : pas d’application à installer, pas de jeton à générer. Tout ce que votre clé SSH atteint fonctionne de la même façon — voir Clés SSH et git.

Un projet peut avoir plusieurs dépôts, ou aucun : un espace de travail sans dépôt n’est qu’un environnement.

Hooks de cycle de vie

Hook S’exécute
postCreateCommand une fois, à la création de l’espace de travail — et de nouveau lors d’un rebuild
postStartCommand à chaque démarrage de l’espace de travail

Les deux s’exécutent en tant qu’utilisateur vscode, dans l’espace de travail, avec dans l’environnement les secrets du projet et les adresses des services partagés. Leur sortie constitue le journal d’installation (setup) du worker ; un hook en échec fait passer le worker en error, avec l’étape à laquelle il s’est arrêté.

Ports

Tout port en écoute dans un worker est accessible à http://worker-<id>-<port>.localhost sans avoir été déclaré. En déclarer un sous Runtime → Ports lui donne un libellé (Web app) et un chemin d’arrivée (/dashboard), utilisés par les liens qu’affiche Lite — sur le panneau Machine d’une tâche, un port déclaré est vert tant que quelque chose écoute dessus, et grisé sinon.

Docker dans l’espace de travail

Runtime → Docker active Docker-in-Docker pour les workers du projet (le modèle du même nom l’active d’emblée), de sorte que docker compose up fonctionne dans un espace de travail, isolé du démon de votre hôte.

Volumes partagés

Des volumes montés dans tous les workers du projet, en plus du /workspace privé de chacun — un cache de paquets, un jeu de données. Voir Volumes partagés.

Versions

Enregistrer une modification de tout ce qui entre dans l’image (image, features, extensions, dépôts, hooks, harnais d’agents…) crée une nouvelle version et construit son image en arrière-plan, pour que le lancement suivant soit déjà chaud. Les noms, descriptions et libellés de ports, eux, n’en créent pas.

  • Les workers existants continuent de tourner sur la version à partir de laquelle ils ont été construits ; leur carte propose Update to vN, qui recrée le conteneur sur la nouvelle configuration et conserve /workspace — fichiers et travail non commité compris.
  • La page du projet liste les versions passées ; Restore rend de nouveau courante une ancienne version (sous la forme d’une nouvelle version).
  • Le journal d’un build d’image s’ouvre depuis la page du projet, et suit le build en direct pendant qu’il tourne.

Modèles

New project → From a template préremplit le formulaire pour Next.js, Vite + React, Astro, FastAPI, Express et Docker-in-Docker. Rien ne lie ensuite le projet à son modèle.

Export et import

Export sur un projet télécharge sa spécification en JSON (GET /api/projects/:id/export). Import, sur le tableau de bord ou dans le formulaire de nouveau projet, préremplit le formulaire à partir d’un tel fichier. Les valeurs des secrets ne sont jamais exportées — seulement leurs noms, pour que le formulaire prépare les lignes à remplir.

Le format est celui que partage Spunto Cloud (le format de projet portable de @spunto/build) : un projet passe donc de Lite à Cloud, ou l’inverse, en l’exportant de l’un et en l’important dans l’autre.

Supprimer un projet

Supprimer un projet supprime ses workers, ses images et ses volumes partagés, après une confirmation explicite — les volumes partagés contiennent des données qu’aucun rebuild ne fait revenir.