33800 Docs

← Retour

CI/CD Pipeline

Dernière mise à jour : 16/02/2026 (vérifié via GitLab API + docker ps)

Projets Smart-Deploy actifs (17 projets)

Projet Port Domaine nginx Status
ai-orchestrator 5501 ai-orchestrator.33800 ✅ healthy
authentificator 8284 auth.33800 ✅ healthy
browser-connector 5404 browser.33800 ✅ healthy
claude-memory 5510 claude-memory.33800 ✅ healthy
claude-memory-front 5511 memory.33800 ✅ healthy
connectors-api 5403 (via wireguard-sidecar) connectors.33800 ✅ healthy
connectors-front 5402 (blue-green) connectors-front.33800 ✅ healthy
dashboard-33800 (backend) 5520 dashboard-api.33800 ✅ healthy
dashboard-33800-frontend 5521 dashboard.33800 ✅ healthy
needfinder 5200 needfinder-api.33800 ✅ healthy
notif-logger 5300 notif-logger.33800 ⚠️ unhealthy
qwik-interface-generator 5505 qig.33800 ✅ healthy
qwikpress 3002 qwikpress.33800 ✅ healthy
qwikpress (file-mode) 3003 qwikpress-file.33800 ✅ healthy
test-deploy 3050 test-deploy.33800 ✅ healthy
ulias-org 5515 ulias-org.33800 ✅ healthy
ulias-org-web 5516 (blue-green) ulias-web.33800 ✅ healthy
yolo-api 9200 yolo.33800 ✅ healthy

Legacy CI (containers sans conf.prod.gouroubleu.yml)

Container Status
ai-api-ai-api-1 ✅ PROD
ffmpeg-api-ffmpeg-api-1 ✅ PROD
jellylink-api-jellylink-api-1 ✅ PROD
medias-api-medias-api-1 ✅ PROD
notifications-webapp-* ✅ PROD
tintech-api-tintech-api-1 ✅ PROD
ulias-ulias-1 ✅ PROD

Projets sans CI/CD (0 pipeline sur GitLab, vérifié 16/02/2026)


Smart-Deploy System

Système de déploiement avec health check et rollback automatique.

Scripts : /stock_8to/33800-stack/scripts/deploy/

Fichier Description
smart-deploy.sh Script principal
rollback.sh Rollback manuel
lib/health.sh Health check enrichi
lib/notifications.sh Notifications ntfy
lib/registry.sh Registre des services
strategies/docker.sh Déploiement Docker

Healthcheck intelligent (22/01/2026)

Le healthcheck est adapté selon le type d'image :

# Fonction get_healthcheck_cmd() dans docker.sh
case "$type" in
    node|bun|qwik|next)
        # Node.js disponible
        node -e "require('http').get(...)"
        ;;
    *)
        # Python, custom → curl
        curl -sf http://localhost:${port}${health}
        ;;
esac

Configuration projet

Créer conf.prod.gouroubleu.yml :

name: "mon-projet"
target: "prod-portainer"
type: "node"  # node|bun|qwik|next|python|custom
domain: "mon-projet.33800.nowhere84.com"
port: 3000
health: "/health"

services:
  - ntfy

nginx:
  enabled: true
  ssl: true
  private: true          # Restriction IP (defaut: true)
  public_paths:          # Bypass restrictions IP pour ces chemins
    - /api/oauth/callback
    - /health

Targets disponibles

Target Type Host
prod-portainer docker 192.168.1.12
dev-portainer docker 192.168.1.51
nginx files 192.168.1.104
o2switch remote SSH alias
win11 remote 192.168.1.30

Architecture CI/CD

git push main
       │
       ▼
  ┌─────────┐    ┌─────────┐    ┌──────────────┐    ┌─────────────┐
  │  BUILD  │───►│  PUSH   │───►│   DEPLOY     │───►│ HEALTH CHECK│
  │ docker  │    │registry │    │ docker up    │    │  + rollback │
  └─────────┘    └─────────┘    └──────────────┘    └─────────────┘

Composants

Composant URL Rôle
GitLab gitlab.33800.nowhere84.com Code + CI/CD
Registry registry.33800.nowhere84.com Images Docker
Runner prod-portainer Exécution jobs
Dashboard dashboard.33800.nowhere84.com Status services (Qwik SSR)

Template CI/CD (.gitlab-ci.yml)

include:
  - project: 'gouroubleu/ci-templates'
    file: '/deploy.yml'

deploy-prod:
  extends: .deploy-base
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
  variables:
    DEPLOY_ENV: "prod"
    DEPLOY_CONFIG: "conf.prod.gouroubleu.yml"

Commandes utiles

# Relancer une pipeline
curl -X POST --header "PRIVATE-TOKEN: $TOKEN" \
  "https://gitlab.33800.nowhere84.com/api/v4/projects/{id}/pipeline?ref=main"

# Archiver un projet
curl -X POST --header "PRIVATE-TOKEN: $TOKEN" \
  "https://gitlab.33800.nowhere84.com/api/v4/projects/{id}/archive"

# Désarchiver un projet
curl -X POST --header "PRIVATE-TOKEN: $TOKEN" \
  "https://gitlab.33800.nowhere84.com/api/v4/projects/{id}/unarchive"

# Lister projets actifs
curl --header "PRIVATE-TOKEN: $TOKEN" \
  "https://gitlab.33800.nowhere84.com/api/v4/projects?archived=false"