Skip to content

Commit 546855d

Browse files
committed
feat(scripts): add automated deployment scripts for Railway and Vercel
- deploy-railway.sh: Automated backend + Redis deployment to Railway * CLI installation verification * Project initialization with prompts * Environment variable setup guidance * Redis service configuration * Deployment execution and monitoring - deploy-vercel.sh: Automated frontend deployment to Vercel * CLI installation verification * Backend URL configuration * Preview vs production deployment options * Environment variable injection - verify-setup.sh: Pre-deployment verification checklist * Docker daemon status check * Environment variable validation * Dockerfile existence verification * CLI tool availability check * Color-coded status output - railway.json: Railway platform configuration * Dockerfile build strategy * Health check configuration * Restart policy settings All scripts include error handling, user guidance, and clear success indicators
1 parent 4c6321c commit 546855d

4 files changed

Lines changed: 356 additions & 0 deletions

File tree

railway.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"$schema": "https://railway.app/railway.schema.json",
3+
"build": {
4+
"builder": "DOCKERFILE",
5+
"dockerfilePath": "backend/Dockerfile"
6+
},
7+
"deploy": {
8+
"startCommand": "uvicorn main:app --host 0.0.0.0 --port $PORT",
9+
"restartPolicyType": "ON_FAILURE",
10+
"restartPolicyMaxRetries": 10,
11+
"healthcheckPath": "/health",
12+
"healthcheckTimeout": 300
13+
}
14+
}

scripts/deploy-railway.sh

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
#!/bin/bash
2+
3+
# CodeIntel Railway Deployment Script
4+
# This script automates the Railway deployment setup
5+
6+
set -e # Exit on error
7+
8+
echo "🚀 CodeIntel Railway Deployment Setup"
9+
echo "========================================"
10+
echo ""
11+
12+
# Check if Railway CLI is installed
13+
if ! command -v railway &> /dev/null; then
14+
echo "❌ Railway CLI not found!"
15+
echo ""
16+
echo "Install it with: npm i -g @railway/cli"
17+
echo "Or visit: https://docs.railway.app/develop/cli"
18+
exit 1
19+
fi
20+
21+
echo "✅ Railway CLI found"
22+
echo ""
23+
24+
# Login to Railway
25+
echo "📝 Logging into Railway..."
26+
railway login
27+
28+
echo ""
29+
echo "🔧 Setting up Railway project..."
30+
echo ""
31+
echo "Choose an option:"
32+
echo "1. Create new Railway project"
33+
echo "2. Link to existing Railway project"
34+
read -p "Enter choice (1 or 2): " choice
35+
36+
if [ "$choice" = "1" ]; then
37+
echo ""
38+
echo "Creating new Railway project..."
39+
railway init
40+
elif [ "$choice" = "2" ]; then
41+
echo ""
42+
echo "Linking to existing project..."
43+
railway link
44+
else
45+
echo "Invalid choice. Exiting."
46+
exit 1
47+
fi
48+
49+
echo ""
50+
echo "✅ Railway project configured!"
51+
echo ""
52+
53+
# Ask about environment variables
54+
echo "📋 Environment Variables Setup"
55+
echo "=============================="
56+
echo ""
57+
echo "You need to set these environment variables in Railway dashboard:"
58+
echo ""
59+
echo "Required:"
60+
echo " - OPENAI_API_KEY"
61+
echo " - PINECONE_API_KEY"
62+
echo " - PINECONE_INDEX_NAME"
63+
echo " - SUPABASE_URL"
64+
echo " - SUPABASE_KEY"
65+
echo " - API_KEY (production secret - CHANGE from default!)"
66+
echo ""
67+
echo "Optional (set automatically by Railway Redis):"
68+
echo " - REDIS_URL (auto-set when you add Redis service)"
69+
echo ""
70+
71+
read -p "Have you set these in Railway dashboard? (y/n): " env_set
72+
73+
if [ "$env_set" != "y" ]; then
74+
echo ""
75+
echo "⚠️ Please set environment variables first:"
76+
echo " 1. Go to Railway dashboard"
77+
echo " 2. Select your project"
78+
echo " 3. Go to Variables tab"
79+
echo " 4. Add all required variables"
80+
echo ""
81+
echo "Then run this script again."
82+
exit 0
83+
fi
84+
85+
# Ask about Redis
86+
echo ""
87+
echo "🗄️ Redis Setup"
88+
echo "==============="
89+
echo ""
90+
read -p "Have you added Redis service in Railway dashboard? (y/n): " redis_added
91+
92+
if [ "$redis_added" != "y" ]; then
93+
echo ""
94+
echo "⚠️ Add Redis service:"
95+
echo " 1. Railway Dashboard → New → Database → Redis"
96+
echo " 2. Railway will automatically set REDIS_URL"
97+
echo ""
98+
echo "Then run this script again."
99+
exit 0
100+
fi
101+
102+
# Deploy
103+
echo ""
104+
echo "🚀 Deploying to Railway..."
105+
echo ""
106+
railway up
107+
108+
echo ""
109+
echo "✅ Deployment initiated!"
110+
echo ""
111+
echo "📊 Check deployment status:"
112+
echo " railway logs -f"
113+
echo ""
114+
echo "🔗 Get deployment URL:"
115+
echo " railway domain"
116+
echo ""
117+
echo "Next steps:"
118+
echo "1. Wait for deployment to complete (check Railway dashboard)"
119+
echo "2. Get your backend URL: railway domain"
120+
echo "3. Update VITE_API_URL in frontend with backend URL"
121+
echo "4. Deploy frontend to Vercel"
122+
echo ""
123+
echo "🎉 Done! Your backend is deploying to Railway!"

scripts/deploy-vercel.sh

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#!/bin/bash
2+
3+
# CodeIntel Vercel Deployment Script
4+
# This script automates the Vercel frontend deployment
5+
6+
set -e # Exit on error
7+
8+
echo "🚀 CodeIntel Vercel Deployment Setup"
9+
echo "====================================="
10+
echo ""
11+
12+
# Check if Vercel CLI is installed
13+
if ! command -v vercel &> /dev/null; then
14+
echo "❌ Vercel CLI not found!"
15+
echo ""
16+
echo "Install it with: npm i -g vercel"
17+
echo "Or visit: https://vercel.com/cli"
18+
exit 1
19+
fi
20+
21+
echo "✅ Vercel CLI found"
22+
echo ""
23+
24+
# Navigate to frontend
25+
cd frontend
26+
27+
# Check if backend URL is provided
28+
echo "📋 Environment Variables Setup"
29+
echo "=============================="
30+
echo ""
31+
read -p "Enter your Railway backend URL (e.g., https://your-app.railway.app): " backend_url
32+
33+
if [ -z "$backend_url" ]; then
34+
echo "❌ Backend URL is required!"
35+
exit 1
36+
fi
37+
38+
# Trim trailing slash
39+
backend_url=${backend_url%/}
40+
41+
echo ""
42+
echo "Backend URL: $backend_url"
43+
echo ""
44+
45+
# Deploy to Vercel
46+
echo "🚀 Deploying to Vercel..."
47+
echo ""
48+
echo "Choose deployment type:"
49+
echo "1. Preview (test deployment)"
50+
echo "2. Production"
51+
read -p "Enter choice (1 or 2): " deploy_choice
52+
53+
if [ "$deploy_choice" = "1" ]; then
54+
echo ""
55+
echo "Deploying preview..."
56+
vercel --env VITE_API_URL="$backend_url"
57+
elif [ "$deploy_choice" = "2" ]; then
58+
echo ""
59+
echo "Deploying to production..."
60+
vercel --prod --env VITE_API_URL="$backend_url"
61+
else
62+
echo "Invalid choice. Exiting."
63+
exit 1
64+
fi
65+
66+
echo ""
67+
echo "✅ Deployment complete!"
68+
echo ""
69+
echo "Next steps:"
70+
echo "1. Go to Vercel dashboard to see your deployment"
71+
echo "2. Update CORS settings in backend/main.py with your Vercel URL"
72+
echo "3. Test your application end-to-end"
73+
echo ""
74+
echo "🎉 Done! Your frontend is deployed to Vercel!"

scripts/verify-setup.sh

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
#!/bin/bash
2+
# CodeIntel Docker & Deployment Verification Script
3+
4+
set -e
5+
6+
echo "🔍 CodeIntel Setup Verification"
7+
echo "================================"
8+
echo ""
9+
10+
# Color codes
11+
GREEN='\033[0;32m'
12+
RED='\033[0;31m'
13+
YELLOW='\033[1;33m'
14+
NC='\033[0m' # No Color
15+
16+
# Check Docker
17+
echo "1️⃣ Checking Docker..."
18+
if command -v docker &> /dev/null; then
19+
echo -e "${GREEN}${NC} Docker installed"
20+
21+
if docker info &> /dev/null; then
22+
echo -e "${GREEN}${NC} Docker daemon running"
23+
else
24+
echo -e "${RED}${NC} Docker daemon not running"
25+
echo -e "${YELLOW}Start Docker Desktop and run this script again${NC}"
26+
exit 1
27+
fi
28+
else
29+
echo -e "${RED}${NC} Docker not installed"
30+
echo "Install Docker Desktop: https://www.docker.com/products/docker-desktop"
31+
exit 1
32+
fi
33+
34+
# Check Docker Compose
35+
echo ""
36+
echo "2️⃣ Checking Docker Compose..."
37+
if docker compose version &> /dev/null; then
38+
echo -e "${GREEN}${NC} Docker Compose available"
39+
else
40+
echo -e "${RED}${NC} Docker Compose not available"
41+
exit 1
42+
fi
43+
44+
# Check .env file
45+
echo ""
46+
echo "3️⃣ Checking environment variables..."
47+
if [ -f .env ]; then
48+
echo -e "${GREEN}${NC} Root .env file exists"
49+
50+
# Check required variables
51+
required_vars=("OPENAI_API_KEY" "PINECONE_API_KEY" "SUPABASE_URL" "SUPABASE_KEY" "API_KEY")
52+
missing_vars=()
53+
54+
for var in "${required_vars[@]}"; do
55+
if grep -q "^${var}=" .env && ! grep -q "^${var}=$" .env; then
56+
echo -e "${GREEN}${NC} $var is set"
57+
else
58+
echo -e "${RED}${NC} $var is missing or empty"
59+
missing_vars+=("$var")
60+
fi
61+
done
62+
63+
if [ ${#missing_vars[@]} -ne 0 ]; then
64+
echo -e "${YELLOW}⚠️ Set these variables in .env before deployment${NC}"
65+
fi
66+
else
67+
echo -e "${RED}${NC} .env file not found"
68+
echo "Copy .env.example to .env and fill in your API keys"
69+
exit 1
70+
fi
71+
72+
# Check Dockerfiles
73+
echo ""
74+
echo "4️⃣ Checking Dockerfiles..."
75+
if [ -f backend/Dockerfile ]; then
76+
echo -e "${GREEN}${NC} Backend Dockerfile exists"
77+
else
78+
echo -e "${RED}${NC} Backend Dockerfile missing"
79+
fi
80+
81+
if [ -f frontend/Dockerfile ]; then
82+
echo -e "${GREEN}${NC} Frontend Dockerfile exists"
83+
else
84+
echo -e "${RED}${NC} Frontend Dockerfile missing"
85+
fi
86+
87+
# Check deployment files
88+
echo ""
89+
echo "5️⃣ Checking deployment configuration..."
90+
if [ -f railway.json ]; then
91+
echo -e "${GREEN}${NC} railway.json exists"
92+
else
93+
echo -e "${YELLOW}${NC} railway.json missing"
94+
fi
95+
96+
if [ -f DEPLOYMENT.md ]; then
97+
echo -e "${GREEN}${NC} DEPLOYMENT.md exists"
98+
else
99+
echo -e "${YELLOW}${NC} DEPLOYMENT.md missing"
100+
fi
101+
102+
# Check CLI tools (optional)
103+
echo ""
104+
echo "6️⃣ Checking deployment CLI tools (optional)..."
105+
if command -v railway &> /dev/null; then
106+
echo -e "${GREEN}${NC} Railway CLI installed"
107+
else
108+
echo -e "${YELLOW}${NC} Railway CLI not installed (needed for Railway deployment)"
109+
echo " Install: npm i -g @railway/cli"
110+
fi
111+
112+
if command -v vercel &> /dev/null; then
113+
echo -e "${GREEN}${NC} Vercel CLI installed"
114+
else
115+
echo -e "${YELLOW}${NC} Vercel CLI not installed (needed for Vercel deployment)"
116+
echo " Install: npm i -g vercel"
117+
fi
118+
119+
# Summary
120+
echo ""
121+
echo "================================"
122+
echo "📊 Summary"
123+
echo "================================"
124+
echo ""
125+
echo "Next steps:"
126+
echo ""
127+
echo "🏠 Local Development:"
128+
echo " docker compose up -d"
129+
echo " # Frontend: http://localhost:3000"
130+
echo " # Backend: http://localhost:8000"
131+
echo " # API Docs: http://localhost:8000/docs"
132+
echo ""
133+
echo "☁️ Deploy Backend to Railway:"
134+
echo " ./scripts/deploy-railway.sh"
135+
echo ""
136+
echo "☁️ Deploy Frontend to Vercel:"
137+
echo " ./scripts/deploy-vercel.sh"
138+
echo ""
139+
echo "📝 Check logs:"
140+
echo " docker compose logs -f"
141+
echo ""
142+
echo "🛑 Stop services:"
143+
echo " docker compose down"
144+
echo ""
145+
echo "✅ Setup verification complete!"

0 commit comments

Comments
 (0)