SPB Git forge

spb/immbot-ai

Public
1commits 1branches 0releases
1.5 MBsize
maindefault branch
20 days agolast push
TypeScript 98.3% CSS 0.9% Shell 0.7%
2.4 KB · 55 lines shellscript
Raw Blame History
1#!/usr/bin/env bash2# Déploiement d'Immbot AI sur le nœud M3U96b du cluster MacLustr, avec www.immbot.ai (ngrok).3# Réexécutable : rsync incrémental + rebuild + restart PM2.4set -euo pipefail56NODE=M3U96b7APP=immbot-ai8PORT=30709DOMAIN=www.immbot.ai10REMOTE_BASE='~/apps'11LOCAL_ROOT="$(cd "$(dirname "$0")/.." && pwd)"12COURSES_ROOT="$(dirname "$LOCAL_ROOT")"1314echo "== 1/6 Synchronisation du code et des cours vers $NODE =="15ssh $NODE "mkdir -p $REMOTE_BASE"16rsync -az --delete \17  --exclude node_modules --exclude .next --exclude data --exclude backups \18  "$LOCAL_ROOT/" "$NODE:$REMOTE_BASE/$APP/"19rsync -az --delete --exclude .git --exclude plateforme_ateliers --exclude __pycache__ \20  "$COURSES_ROOT/IMM1003-20/" "$NODE:$REMOTE_BASE/IMM1003-20/"21rsync -az --delete --exclude .git --exclude plateforme_data --exclude __pycache__ \22  "$COURSES_ROOT/IMM1033-20/" "$NODE:$REMOTE_BASE/IMM1033-20/"23rsync -az "$COURSES_ROOT/output/course-analysis/" "$NODE:$REMOTE_BASE/output/course-analysis/"2425echo "== 2/6 .env de production (créé s'il n'existe pas — la clé vient du .env local) =="26scp -q "$LOCAL_ROOT/.env" "$NODE:$REMOTE_BASE/$APP/.env.local-copy"27ssh $NODE "cd $REMOTE_BASE/$APP && if [ ! -f .env ]; then28  cp .env.local-copy .env29  sed -i '' 's|^APP_URL=.*|APP_URL=https://$DOMAIN|' .env30fi; rm -f .env.local-copy"3132echo "== 3/6 Installation + seed + ingestion + build =="33ssh $NODE "export PATH=/opt/homebrew/bin:\$PATH && cd $REMOTE_BASE/$APP && \34  (command -v pnpm >/dev/null || sudo npm i -g pnpm --silent || npm i -g pnpm --silent) && \35  pnpm install --silent && \36  node --env-file=.env scripts/seed.ts && \37  node --env-file=.env scripts/ingest-courses.ts --force && \38  ./node_modules/.bin/next build"3940echo "== 4/6 PM2 : application =="41ssh $NODE "export PATH=/opt/homebrew/bin:\$PATH && cd $REMOTE_BASE/$APP && \42  pm2 delete $APP 2>/dev/null; \43  pm2 start ./node_modules/.bin/next --name $APP --interpreter none -- start -p $PORT && pm2 save"4445echo "== 5/6 PM2 : tunnel ngrok ($DOMAIN) =="46ssh $NODE "export PATH=/opt/homebrew/bin:\$PATH && \47  pm2 delete immbot-ngrok 2>/dev/null; \48  pm2 start ngrok --name immbot-ngrok -- http --url=$DOMAIN $PORT && pm2 save"4950echo "== 6/6 Healthcheck =="51sleep 652ssh $NODE "curl -s http://localhost:$PORT/api/health" && echo53curl -s "https://$DOMAIN/api/health" && echo || echo "(le domaine peut prendre quelques secondes)"54echo "✅ Déployé : https://$DOMAIN — penser à mettre à jour ~/Desktop/cluster-skill/cluster-deployments.json"55