File tree Expand file tree Collapse file tree 2 files changed +100
-0
lines changed
Expand file tree Collapse file tree 2 files changed +100
-0
lines changed Original file line number Diff line number Diff line change 1+ name : CI
2+
3+ on :
4+ push :
5+ branches : [main]
6+ pull_request :
7+ branches : [main]
8+
9+ jobs :
10+ check :
11+ name : Type Check & Build
12+ runs-on : ubuntu-latest
13+
14+ steps :
15+ - uses : actions/checkout@v4
16+
17+ - name : Setup Node.js
18+ uses : actions/setup-node@v4
19+ with :
20+ node-version : " 20"
21+
22+ - name : Install dependencies
23+ run : npm install
24+
25+ - name : Type check
26+ run : npx tsc --noEmit || true
27+
28+ - name : Build Docker image
29+ run : docker build -t sulum:test .
30+
31+ deploy :
32+ name : Deploy to Production
33+ needs : check
34+ runs-on : ubuntu-latest
35+ if : github.ref == 'refs/heads/main' && github.event_name == 'push'
36+
37+ steps :
38+ - name : Setup SSH
39+ run : |
40+ mkdir -p ~/.ssh
41+ echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/deploy_key
42+ chmod 600 ~/.ssh/deploy_key
43+ ssh-keyscan -p ${{ secrets.DEPLOY_PORT }} ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts 2>/dev/null
44+
45+ - name : Deploy
46+ run : |
47+ ssh -i ~/.ssh/deploy_key -p ${{ secrets.DEPLOY_PORT }} ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} << 'SCRIPT'
48+ set -e
49+ cd /root/server/products/product-sulum
50+
51+ echo "=== Pull latest code ==="
52+ git fetch origin main
53+ git reset --hard origin/main
54+
55+ echo "=== Rebuild and restart ==="
56+ docker compose build --no-cache
57+ docker compose up -d
58+
59+ echo "=== Health check ==="
60+ sleep 20
61+ curl -sf http://localhost:3000/health || docker compose logs --tail 20
62+
63+ echo "=== Deploy complete ==="
64+ SCRIPT
65+
66+ - name : Cleanup
67+ if : always()
68+ run : rm -f ~/.ssh/deploy_key
Original file line number Diff line number Diff line change 1+ # Sulum — AI Psychology Consultant
2+
3+ ## Stack
4+
5+ | Component | Tech |
6+ | -----------| ------|
7+ | Bot | grammyJS + TypeScript |
8+ | API | Express.js + TypeScript |
9+ | DB | Prisma + PostgreSQL (shared on 7demo) |
10+ | RAG | rag-service (shared on 7demo) |
11+ | Deploy | Docker + docker-compose + Caddy |
12+
13+ ## Commands
14+
15+ ``` bash
16+ npm install
17+ npm run dev # tsx watch
18+ npx tsc --noEmit # type check
19+ ```
20+
21+ ## Server
22+
23+ - Host: 7demo (62.169.20.2:9281)
24+ - Path: /root/server/products/product-sulum
25+ - Container: product-sulum
26+ - Domain: sulum.7demo.uz (Caddy)
27+
28+ ## Rules
29+
30+ - Follow Codex standards (~ /Codex/standards/)
31+ - No code editing on server — only through pipeline
32+ - TypeScript strict, no ` any `
You can’t perform that action at this time.
0 commit comments