ca-grow-ops-manager/deploy.sh
fullsizemalt a4ea600843
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
chore: Add .gitignore and update dependencies
- Added root .gitignore to exclude node_modules
- Updated backend and frontend package-lock.json
- Updated STATUS.md
- Added deployment helper scripts
2025-12-09 00:30:27 -08:00

141 lines
4.7 KiB
Bash
Executable file

#!/bin/bash
# CA Grow Ops Manager - Automated Deployment Script
# Run this after creating the Forgejo repository
set -e # Exit on error
echo "🚀 CA Grow Ops Manager - Automated Deployment"
echo "=============================================="
echo ""
# Colors
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Step 1: Add Git remote
echo -e "${BLUE}Step 1: Adding Forgejo remote...${NC}"
if git remote | grep -q "^origin$"; then
echo " Remote 'origin' already exists, removing..."
git remote remove origin
fi
git remote add origin https://git.runfoo.run/malty/ca-grow-ops-manager.git
echo -e "${GREEN}✓ Remote added${NC}"
echo ""
# Step 2: Push to Forgejo
echo -e "${BLUE}Step 2: Pushing code to Forgejo...${NC}"
echo " You may be prompted for Forgejo credentials"
git push -u origin main
echo -e "${GREEN}✓ Code pushed${NC}"
echo ""
# Step 3: Display SSH private key for Forgejo secret
echo -e "${BLUE}Step 3: SSH Private Key for Forgejo Secret${NC}"
echo -e "${YELLOW}IMPORTANT: Copy the following private key and add it to Forgejo secrets${NC}"
echo ""
echo "Go to: https://git.runfoo.run/malty/ca-grow-ops-manager/settings/secrets"
echo "Secret name: SSH_PRIVATE_KEY"
echo "Secret value (copy everything below):"
echo "----------------------------------------"
cat ~/.ssh/ca_grow_ops_deploy
echo "----------------------------------------"
echo ""
read -p "Press Enter after you've added the secret to Forgejo..."
echo -e "${GREEN}✓ SSH key noted${NC}"
echo ""
# Step 4: Clone to nexus-vector
echo -e "${BLUE}Step 4: Cloning repository to nexus-vector...${NC}"
ssh admin@nexus-vector "cd /srv/containers && git clone https://git.runfoo.run/malty/ca-grow-ops-manager.git ca-grow-ops-manager || (cd ca-grow-ops-manager && git pull origin main)"
echo -e "${GREEN}✓ Repository cloned${NC}"
echo ""
# Step 5: Generate environment variables
echo -e "${BLUE}Step 5: Generating secure environment variables...${NC}"
DB_PASSWORD=$(openssl rand -base64 32)
JWT_SECRET=$(openssl rand -base64 64)
ssh admin@nexus-vector "cat > /srv/containers/ca-grow-ops-manager/docker-compose.env << 'EOF'
# Database
DB_PASSWORD=${DB_PASSWORD}
# JWT
JWT_SECRET=${JWT_SECRET}
# Email (optional for v1)
EMAIL_SERVICE=sendgrid
EMAIL_API_KEY=your_api_key_here
EMAIL_FROM=noreply@example.com
EOF"
echo -e "${GREEN}✓ Environment variables generated${NC}"
echo ""
echo -e "${YELLOW}IMPORTANT: Save these credentials:${NC}"
echo "DB_PASSWORD=${DB_PASSWORD}"
echo "JWT_SECRET=${JWT_SECRET}"
echo ""
read -p "Press Enter after you've saved these credentials..."
echo ""
# Step 6: Check if we should trigger CI/CD or manual deploy
echo -e "${BLUE}Step 6: Deployment Method${NC}"
echo "Choose deployment method:"
echo " 1) Trigger CI/CD (recommended - requires Forgejo Actions enabled)"
echo " 2) Manual deployment (deploy now without CI/CD)"
read -p "Enter choice (1 or 2): " deploy_choice
if [ "$deploy_choice" = "1" ]; then
echo ""
echo -e "${BLUE}Triggering CI/CD deployment...${NC}"
echo "# Trigger CI/CD" >> README.md
git add README.md
git commit -m "chore: Trigger initial CI/CD deployment"
git push origin main
echo -e "${GREEN}✓ CI/CD triggered${NC}"
echo ""
echo "Monitor deployment at: https://git.runfoo.run/malty/ca-grow-ops-manager/actions"
else
echo ""
echo -e "${BLUE}Performing manual deployment...${NC}"
ssh admin@nexus-vector "cd /srv/containers/ca-grow-ops-manager && docker compose build && docker compose up -d"
echo -e "${GREEN}✓ Services deployed${NC}"
fi
echo ""
# Step 7: Verify deployment
echo -e "${BLUE}Step 7: Verifying deployment...${NC}"
sleep 10 # Wait for services to start
echo "Checking service health..."
ssh admin@nexus-vector "curl -f http://localhost:8010/api/healthz 2>/dev/null || echo 'Health check will be available once backend is implemented'"
echo ""
echo "Container status:"
ssh admin@nexus-vector "cd /srv/containers/ca-grow-ops-manager && docker compose ps"
echo ""
# Final summary
echo -e "${GREEN}=============================================="
echo "✅ Deployment Complete!"
echo "==============================================
${NC}"
echo ""
echo "📊 Summary:"
echo " - Repository: https://git.runfoo.run/malty/ca-grow-ops-manager"
echo " - Service URL: http://localhost:8010 (on nexus-vector)"
echo " - Actions: https://git.runfoo.run/malty/ca-grow-ops-manager/actions"
echo ""
echo "📝 Next Steps:"
echo " 1. Enable Forgejo Actions in repository settings"
echo " 2. Start implementing Week 1 tasks"
echo " 3. Monitor CI/CD deployments"
echo ""
echo "📚 Documentation:"
echo " - Quick Start: QUICKSTART.md"
echo " - Deployment: DEPLOYMENT.md"
echo " - CI/CD: CI-CD.md"
echo " - Tasks: plans/tasks-week-1-infrastructure.md"
echo ""
echo -e "${GREEN}Happy coding! 🚀${NC}"