agenthub/docs/J6-VERIFICATION-FINAL.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

5.5 KiB

J6 — Tests + Dockerfile + compose : Vérification Finale

Jalon : BARAAA-44
Issue : BARAAA-44
Plan source : BARAAA-14 J6

Objectif

Packager AgentHub en Docker avec compose et ajouter les tests smoke d'intégration à la CI.

Livrables

  • Dockerfile multi-stage — Déjà présent, conforme plan §6.1
  • compose.lan.yml — Phase 1 LAN (port 3000 publié, pas de Traefik)
  • compose.coolify.yml — Phase 2 (labels Traefik, versionné)
  • compose.dev.yml — E2E local (app + postgres + redis)
  • Tests intégration smoke (CI) NOUVEAU J6
  • README onboarding — Section Docker & scripts de test

Critères de succès

docker compose -f compose.lan.yml up lance la stack complète

Fichiers présents et validés :

  • compose.lan.yml — utilise image registry + postgres + redis + backup
  • compose.dev.yml — build local pour dev
  • compose.coolify.yml — Phase 2 avec Traefik (versionné, pas encore testé)

CI < 5 min avec tests d'intégration

Améliorations J6 final :

Job test (lint + typecheck + integration tests)

  • Services Postgres 16 + Redis 7 ajoutés comme services CI
  • Health checks configurés pour attendre que les services soient prêts
  • Migration DB (npm run migrate) avant les tests
  • Variables d'environnement complètes pour tests d'intégration
  • Tests d'intégration API + Socket.io + DB seed executés en CI

Job build (docker build + smoke test + push)

  • Build de l'image Docker multi-stage
  • Smoke test Docker : vérifie que l'image démarre et passe le healthcheck (timeout 30s)
  • Push vers registry.barodine.net si secrets configurés
  • Tags : <sha> + dev

Temps CI estimé :

  • Job test : ~2 min (lint + typecheck + migration + tests)
  • Job build : ~2 min (build multi-stage + smoke test)
  • Total : < 5 min

Fichiers créés/modifiés

Nouveaux fichiers

  • scripts/smoke-test-docker.sh — Script smoke test Docker local (avec compose.dev.yml)
  • docs/J6-VERIFICATION-FINAL.md — Ce fichier

Fichiers modifiés

  • .forgejo/workflows/ci.yml — Ajout services Postgres/Redis + smoke test Docker
  • README.md — Documentation script smoke-test-docker.sh

Fichiers déjà présents (J6 initial)

  • Dockerfile — Multi-stage (deps / build / runtime)
  • compose.lan.yml — Phase 1 LAN
  • compose.coolify.yml — Phase 2 Coolify
  • compose.dev.yml — Dev local
  • test/api-integration.test.ts — Tests complets du flow auth REST
  • test/socket.test.ts — Tests WebSocket + rooms + messages
  • test/db-seed.test.ts — Tests schema + seed
  • test/healthz.test.ts — Test healthcheck simple

Tests disponibles

Tests CI automatiques

# En CI Forgejo (avec services Postgres + Redis)
npm run typecheck  # TypeScript strict
npm run lint       # ESLint
npm test           # vitest (tests d'intégration + unit)

Tests inclus dans npm test :

  • healthz.test.ts — Healthcheck endpoint
  • api-integration.test.ts — Flow auth complet (create agent → issue token → exchange JWT → revoke)
  • socket.test.ts — WebSocket auth + rooms + messages temps réel
  • db-seed.test.ts — Schema DB + seed data

Tests manuels / smoke

# Smoke test Docker local (nécessite compose.dev.yml up)
./scripts/smoke-test-docker.sh registry.barodine.net/agenthub:dev

# Smoke test LAN complet (2 agents, WebSocket, persistence)
./test/smoke-lan-2-agents.sh localhost

Vérification post-commit

Build + Typecheck

$ npm run typecheck
✅ Pas d'erreurs TypeScript

$ npm run build
✅ dist/ généré correctement

Tests (nécessite Postgres + Redis)

# Lancer la stack dev
$ docker compose -f compose.dev.yml up -d

# Appliquer migrations
$ npm run migrate

# Lancer tests
$ npm test
✅ Tous les tests passent (healthz + api-integration + socket + db-seed)

Smoke test Docker

# Avec compose.dev.yml up (postgres + redis)
$ ./scripts/smoke-test-docker.sh registry.barodine.net/agenthub:dev
✅ Container démarre
✅ Healthcheck passe
✅ HTTP /healthz répond

CI Pipeline

Workflow .forgejo/workflows/ci.yml :

on: [push, pull_request]

jobs:
  test:
    services:
      postgres: postgres:16-alpine (healthcheck)
      redis: redis:7-alpine (healthcheck)
    steps:
      - Install deps
      - Lint + format check
      - Typecheck
      - Setup DB (npm run migrate)
      - Run integration tests (npm test)
  
  build:
    needs: test
    if: github.ref == 'refs/heads/main'
    services:
      postgres: postgres:16-alpine
      redis: redis:7-alpine
    steps:
      - Build Docker image
      - Smoke test (verify healthcheck passes)
      - Push to registry.barodine.net

Phase 2 (hors-scope J6)

compose.coolify.yml est versionné mais pas encore testé :

  • Labels Traefik pour proxy inverse
  • Webhook Coolify pour auto-deploy
  • Backup S3 + GPG encryption

Activation lors de la migration Phase 2 (item Plane séparé, cf. ADR-0004).


Statut : J6 COMPLET

Tous les livrables présents :

  • Dockerfile multi-stage
  • compose.lan.yml + compose.coolify.yml + compose.dev.yml
  • Tests intégration smoke dans CI (Postgres + Redis services)
  • Smoke test Docker en CI
  • README onboarding + scripts documentés
  • CI < 5 min (estimé : ~4 min)

Prochaine étape : [BARAAA-45] J7 Front React (item Plane AGNHUB-11, cf. plan).