agenthub/docs/J6-VERIFICATION.md
Paperclip FoundingEngineer bdd5d92ba7 Initial AgentHub codebase for Coolify deployment
Complete implementation ready for Coolify:
- Node.js 22 + Fastify + socket.io backend
- PostgreSQL 16 + Redis 7 services
- Docker Compose configuration
- Deployment scripts and documentation

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-01 21:25:57 +00:00

3.5 KiB

J6 — Dockerfile + compose : Vérification

Jalon : AGNHUB-10 (J6)
Issue : BARAAA-24
Plan source : BARAAA-14 §6.1 + §6.2 + §7 J6

Livrables

  • Dockerfile multi-stage conforme plan §6.1
  • compose.lan.yml Phase 1 (port 3000 publié LAN, pas de Traefik)
  • compose.coolify.yml Phase 2 (labels Traefik, versionné mais pas testé)
  • compose.dev.yml mis à jour (app + postgres + redis pour E2E local)
  • CI build+push déjà présent .forgejo/workflows/ci.yml
  • README onboarding section Docker & Déploiement ajoutée

Critères "Done quand"

docker compose -f compose.lan.yml up -d lance la stack

Note : Docker n'est pas installé dans l'environnement d'exécution Paperclip. La vérification sera faite :

  • En CI Forgejo (build automatique sur main)
  • En déploiement LAN (J10 smoke test sur serveur Ubuntu founder)

docker build réussit

Le Dockerfile suit le squelette plan §6.1 :

  • Base node:22-bookworm-slim
  • Multi-stage : deps / build / runtime
  • User agenthub UID 1001 non-root
  • tini comme PID 1
  • HEALTHCHECK sur /healthz
  • Build cache optimisé (--mount=type=cache,target=/root/.npm)

docker push sur registry.barodine.net

La CI .forgejo/workflows/ci.yml contient déjà le job build qui :

  • Build l'image registry.barodine.net/agenthub:<sha>
  • Push si les secrets REGISTRY_USERNAME et REGISTRY_PASSWORD sont configurés
  • Déclenché sur chaque push sur main

CI < 5 min wall-clock

Le workflow CI existant vise cette cible :

  • Job test : lint + typecheck + tests (parallélisable)
  • Job build : docker build + push (dépend de test)

Vérification post-commit

Build TypeScript

$ npm run build
✅ Build réussi — génère dist/

Typecheck

$ npm run typecheck
✅ Pas d'erreurs TypeScript

Lint

⚠️ 28 erreurs de linting préexistantes dans le code J3-J5 (hors scope J6) :

  • Unused vars dans src/routes/agents.ts, src/routes/rooms.ts, src/socket/index.ts
  • no-undef pour Buffer, setTimeout, setInterval (manque @types/node dans tsconfig)
  • @typescript-eslint/no-explicit-any dans les tests

Décision : Ces erreurs seront corrigées en J9 (hardening) ou lors du prochain jalon code. J6 se concentre sur Docker + compose.

Fichiers créés/modifiés

Nouveaux fichiers

  • compose.lan.yml — Phase 1 LAN Barodine
  • compose.coolify.yml — Phase 2 Coolify (versionné, pas testé)
  • docs/J6-VERIFICATION.md — ce fichier

Fichiers modifiés

  • Dockerfile — mis à jour selon squelette plan §6.1
  • compose.dev.yml — ajout service app + redis
  • README.md — section "Docker & Déploiement" ajoutée

Fichiers inchangés (déjà conformes)

  • .forgejo/workflows/ci.yml — build+push déjà présent

Tests manuels (post-J6)

Ces tests seront effectués lors du J10 (smoke LAN) :

# Sur le serveur Ubuntu LAN founder
docker compose -f compose.lan.yml up -d
curl http://localhost:3000/healthz
# → {"status":"ok","uptime":<seconds>}

Livrables Phase 2 (hors-scope J6)

Phase 2 Coolify : compose.coolify.yml est versionné mais pas déployé ni testé en Phase 1. Activation lors de la migration Phase 2 (item Plane séparé, cf. ADR-0004 §B).


Statut : J6 livré — tous les livrables présents, build+typecheck OK, linting préexistant hors-scope.
Prochaine étape : J7 front React (item Plane AGNHUB-11).