Ralph:Deploy

Pusha projekt till GitHub och starta Ralph på VM.

BleedingDev updated 1mo ago
Claude CodeGeneric
View source ↗
# /ralph:deploy - Deploy till VM via GitHub

Pusha projekt till GitHub och starta Ralph på VM.

## Usage

/ralph:deploy /ralph:deploy --overnight # Stäng av VM när klar /ralph:deploy --skip-requirements # Hoppa över requirements check


## Prerequisites

- IMPLEMENTATION_PLAN.md eller specs/\*.md måste finnas
- VM måste vara konfigurerad (~/.ralph-vm)
- GitHub repo måste finnas

## Instructions

Du är en deployment-assistent. Kör dessa steg:

**STEG 1: VALIDERA**

Kör denna validering och STOPPA om något saknas:

```bash
echo "=== PRE-DEPLOY VALIDATION ==="

# 1. Specs måste finnas
SPEC_COUNT=$(ls -1 specs/*.md 2>/dev/null | grep -v "CR-" | wc -l | tr -d ' ')
if [ "$SPEC_COUNT" -eq 0 ]; then
    echo "❌ FATAL: No specs found in specs/"
    echo "   Run /ralph:plan first to generate specs"
    exit 1
fi
echo "✅ Found $SPEC_COUNT specs"

# 2. PRD bör finnas
if [ ! -f "docs/PRD.md" ] && [ ! -f "docs/prd.md" ]; then
    echo "⚠️  WARNING: No PRD found in docs/"
    echo "   Recommended: Run /ralph:discover first"
fi

# 3. CLAUDE.md bör finnas
if [ ! -f "CLAUDE.md" ]; then
    echo "⚠️  WARNING: No CLAUDE.md found"
    echo "   Ralph works better with project instructions"
fi

# 4. VM config
if [ ! -f "$HOME/.ralph-vm" ]; then
    echo "❌ FATAL: No VM config found (~/.ralph-vm)"
    echo "   Create it with: echo 'VM_IP=x.x.x.x' > ~/.ralph-vm"
    exit 1
fi
source ~/.ralph-vm
echo "✅ VM config: $VM_USER@$VM_IP"

# 5. Git remote
if ! git remote get-url origin > /dev/null 2>&1; then
    echo "❌ FATAL: No git remote 'origin'"
    echo "   Add with: git remote add origin <url>"
    exit 1
fi
echo "✅ Git remote OK"

echo ""
echo "=== VALIDATION PASSED ==="

Om något är ❌ FATAL → STOPPA och be användaren fixa det. Om något är ⚠️ WARNING → Fråga om de vill fortsätta ändå.

STEG 2: REQUIREMENTS CHECK (om inte --skip-requirements)

Kör requirements check LOKALT först (inte på VM):

# Hitta requirements.sh från template eller scripts
if [ -f ".ralph/scripts/requirements.sh" ]; then
  .ralph/scripts/requirements.sh --check
elif [ -f ".ralph/templates/stacks/react-supabase/scripts/requirements.sh" ]; then
  .ralph/templates/stacks/react-supabase/scripts/requirements.sh --check
else
  echo "No requirements.sh found, skipping"
fi

Om requirements FAILAR:

  • Visa vad som saknas
  • Ge instruktioner för manuell fix (speciellt auth)
  • STOPPA deploy tills fixat

Om requirements OK → fortsätt till steg 3.

STEG 3: KOLLA CLAUDE AUTH PÅ VM

Kör via SSH för att kolla om Claude är autentiserad:

source ~/.ralph-vm
ssh $VM_USER@$VM_IP "claude --version 2>/dev/null && echo 'CLAUDE_OK' || echo 'CLAUDE_MISSING'"

Om CLAUDE_MISSING eller första gången:

Läs .ralph/config.json för att se claude.auth_method:

Om subscription:

⚠️  Claude behöver autentiseras på VM:en (första gången)

Kör följande:
  1. ssh $VM_USER@$VM_IP
  2. claude login
  3. Följ instruktionerna i browsern
  4. Kör /ralph:deploy igen

Detta behöver bara göras en gång per VM.

STOPPA och vänta på att användaren gör detta.

Om api_key:

⚠️  ANTHROPIC_API_KEY behöver sättas på VM:en

Kör följande:
  1. ssh $VM_USER@$VM_IP
  2. echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.bashrc
  3. source ~/.bashrc
  4. Kör /ralph:deploy igen

STOPPA och vänta på att användaren gör detta.

Om Claude redan fungerar → fortsätt till steg 4.

STEG 4: VÄLJ MODE

Fråga användaren med AskUserQuestion:

Vilken mode vill du köra Ralph i?

1. Standard (E2E + auto-CR) - Recommended
   Kör specs med Playwright-tester, genererar auto-fix vid fel

2. Quick (bara build)
   Snabbaste - bara spec-körning och build verify

3. Inferno (allt + parallel)
   Full kraft - E2E, auto-CR, design review, parallel worktrees

Spara valet:

  • Standard → RALPH_FLAGS="--orchestrate"
  • Quick → RALPH_FLAGS=""
  • Inferno → RALPH_FLAGS="--orchestrate --parallel"

STEG 5: PUSHA TILL GITHUB

git add -A
git commit -m "Deploy: $(date +%Y-%m-%d_%H:%M)" || true
git push origin main

STEG 6: STARTA PÅ VM

Använd RALPH_FLAGS från steg 3. Kör via SSH:

# Hämta VM-config
source ~/.ralph-vm

# SSH till VM och kör (RALPH_FLAGS sätts baserat på mode-val)
ssh $VM_USER@$VM_IP << EOF
  # Cleanup - döda gamla processer innan vi startar
  echo "Cleaning up old processes..."
  supabase stop 2>/dev/null || true
  pkill -f "vite|next|node.*dev" 2>/dev/null || true
  sleep 2

  cd ~/projects

  # Klona eller uppdatera repo
  REPO_NAME=\$(basename \$(git remote get-url origin 2>/dev/null || echo "project") .git)

  if [ -d "\$REPO_NAME" ]; then
    cd "\$REPO_NAME"
    git pull origin main
  else
    gh repo clone \$(git remote get-url origin) "\$REPO_NAME"
    cd "\$REPO_NAME"
  fi

  # Installera node_modules om saknas
  [ -f "package.json" ] && [ ! -d "node_modules" ] && npm install

  # Gör ralph körbar
  chmod +x ralph .ralph/scripts/*.sh 2>/dev/null || true

  # Starta Ralph med vald mode
  nohup ./.ralph/scripts/ralph.sh $RALPH_FLAGS > ralph-deploy.log 2>&1 &
  echo "Ralph startad med PID: \$! (mode: $RALPH_FLAGS)"
EOF

MODES:

  • Standard: --orchestrate (E2E + auto-CR)
  • Quick: (inga flaggor) - bara build verify
  • Inferno: --orchestrate --parallel (allt)

STEG 7: BEKRÄFTA Skriv ut:

✅ DEPLOY KLAR!

Ralph kör nu på VM: $VM_IP

Följ progress:
  - ntfy.sh (notifieringar)
  - ssh $VM_USER@$VM_IP 'tail -f ~/projects/REPO/ralph-deploy.log'

När klar:
  /ralph:review    # Öppna tunnlar och testa

VIKTIGT:

  • Använd gh repo clone INTE git clone (hanterar auth)
  • Kör ralph.sh i bakgrunden med nohup
  • Ge användaren kommandon för att följa progress

Maintain Ralph:Deploy?

Let people know it's listed here — add the badge (live metrics, light/dark aware) or a plain link to your README or docs.

[Ralph:Deploy on getagentictools](https://getagentictools.com/loops/bleedingdev-ralph-deploy-deploy-till-vm-via-github?ref=badge)