bd sync: gt-7m33w daemon cache bug identified
This commit is contained in:
233
scripts/test-gce-install.sh
Executable file
233
scripts/test-gce-install.sh
Executable file
@@ -0,0 +1,233 @@
|
||||
#!/bin/bash
|
||||
# test-gce-install.sh - Test Gas Town installation on fresh GCE VM
|
||||
#
|
||||
# Usage:
|
||||
# # Create a fresh Debian/Ubuntu VM on GCE, then:
|
||||
# curl -fsSL https://raw.githubusercontent.com/steveyegge/gastown/main/scripts/test-gce-install.sh | bash
|
||||
#
|
||||
# # Or clone and run locally:
|
||||
# ./scripts/test-gce-install.sh
|
||||
#
|
||||
# This script:
|
||||
# 1. Installs all prerequisites (Go, git, tmux, beads, Claude Code)
|
||||
# 2. Installs Gas Town
|
||||
# 3. Runs verification tests
|
||||
# 4. Reports success/failure
|
||||
|
||||
set -e
|
||||
|
||||
# Colors
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
log() { echo -e "${GREEN}[+]${NC} $1"; }
|
||||
warn() { echo -e "${YELLOW}[!]${NC} $1"; }
|
||||
fail() { echo -e "${RED}[X]${NC} $1"; exit 1; }
|
||||
check() { echo -e "${GREEN}[✓]${NC} $1"; }
|
||||
|
||||
echo "================================================"
|
||||
echo " Gas Town GCE Installation Test"
|
||||
echo " $(date)"
|
||||
echo "================================================"
|
||||
echo
|
||||
|
||||
# Detect OS
|
||||
if [[ -f /etc/os-release ]]; then
|
||||
. /etc/os-release
|
||||
OS=$ID
|
||||
log "Detected OS: $OS ($VERSION_ID)"
|
||||
else
|
||||
fail "Cannot detect OS"
|
||||
fi
|
||||
|
||||
# ============================================
|
||||
# STEP 1: Install Prerequisites
|
||||
# ============================================
|
||||
log "Installing prerequisites..."
|
||||
|
||||
# Update package manager
|
||||
if [[ "$OS" == "debian" || "$OS" == "ubuntu" ]]; then
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get install -y -qq git tmux curl
|
||||
elif [[ "$OS" == "fedora" || "$OS" == "centos" || "$OS" == "rhel" ]]; then
|
||||
sudo dnf install -y git tmux curl
|
||||
else
|
||||
warn "Unknown OS, assuming deps are installed"
|
||||
fi
|
||||
|
||||
# Install Go 1.23+
|
||||
if command -v go &> /dev/null; then
|
||||
GO_VERSION=$(go version | grep -oP 'go\K[0-9]+\.[0-9]+')
|
||||
if [[ $(echo "$GO_VERSION >= 1.23" | bc -l) -eq 1 ]]; then
|
||||
check "Go $GO_VERSION already installed"
|
||||
else
|
||||
warn "Go $GO_VERSION too old, installing 1.23..."
|
||||
INSTALL_GO=1
|
||||
fi
|
||||
else
|
||||
INSTALL_GO=1
|
||||
fi
|
||||
|
||||
if [[ -n "$INSTALL_GO" ]]; then
|
||||
log "Installing Go 1.23..."
|
||||
curl -fsSL https://go.dev/dl/go1.23.4.linux-amd64.tar.gz | sudo tar -C /usr/local -xzf -
|
||||
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
|
||||
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> ~/.bashrc
|
||||
check "Go installed: $(go version)"
|
||||
fi
|
||||
|
||||
# Ensure GOBIN is in PATH
|
||||
export PATH=$PATH:$HOME/go/bin
|
||||
|
||||
# ============================================
|
||||
# STEP 2: Install Beads
|
||||
# ============================================
|
||||
log "Installing beads (bd)..."
|
||||
|
||||
if command -v bd &> /dev/null; then
|
||||
check "beads already installed: $(bd --version)"
|
||||
else
|
||||
# Install via go install
|
||||
go install github.com/steveyegge/beads/cmd/bd@latest
|
||||
if command -v bd &> /dev/null; then
|
||||
check "beads installed: $(bd --version)"
|
||||
else
|
||||
fail "beads installation failed"
|
||||
fi
|
||||
fi
|
||||
|
||||
# ============================================
|
||||
# STEP 3: Install Gas Town
|
||||
# ============================================
|
||||
log "Installing Gas Town (gt)..."
|
||||
|
||||
go install github.com/steveyegge/gastown/cmd/gt@latest
|
||||
|
||||
if command -v gt &> /dev/null; then
|
||||
check "gt installed: $(gt --version 2>/dev/null || echo 'version unknown')"
|
||||
else
|
||||
fail "gt installation failed - check PATH includes ~/go/bin"
|
||||
fi
|
||||
|
||||
# ============================================
|
||||
# STEP 4: Create Test Workspace
|
||||
# ============================================
|
||||
TEST_DIR="$HOME/gt-test-$$"
|
||||
log "Creating test workspace at $TEST_DIR..."
|
||||
|
||||
gt install "$TEST_DIR" --name test-town
|
||||
|
||||
if [[ -d "$TEST_DIR" && -f "$TEST_DIR/CLAUDE.md" ]]; then
|
||||
check "Workspace created successfully"
|
||||
else
|
||||
fail "Workspace creation failed"
|
||||
fi
|
||||
|
||||
cd "$TEST_DIR"
|
||||
|
||||
# ============================================
|
||||
# STEP 5: Verification Tests
|
||||
# ============================================
|
||||
log "Running verification tests..."
|
||||
|
||||
# Test 1: gt status
|
||||
if gt status &> /dev/null; then
|
||||
check "gt status works"
|
||||
else
|
||||
warn "gt status failed (might be OK without daemon)"
|
||||
fi
|
||||
|
||||
# Test 2: beads init
|
||||
if [[ -d ".beads" ]]; then
|
||||
check ".beads directory exists"
|
||||
else
|
||||
fail ".beads directory not created"
|
||||
fi
|
||||
|
||||
# Test 3: bd commands work
|
||||
if bd stats &> /dev/null; then
|
||||
check "bd stats works"
|
||||
else
|
||||
warn "bd stats failed"
|
||||
fi
|
||||
|
||||
# Test 4: Check for hardcoded paths
|
||||
log "Checking for hardcoded paths..."
|
||||
if grep -r "/Users/stevey" "$TEST_DIR" 2>/dev/null; then
|
||||
warn "Found hardcoded /Users/stevey paths!"
|
||||
else
|
||||
check "No hardcoded user paths found"
|
||||
fi
|
||||
|
||||
# Test 5: gt doctor
|
||||
log "Running gt doctor..."
|
||||
if gt doctor 2>&1 | tee /tmp/gt-doctor.log; then
|
||||
check "gt doctor passed"
|
||||
else
|
||||
warn "gt doctor reported issues (see /tmp/gt-doctor.log)"
|
||||
fi
|
||||
|
||||
# ============================================
|
||||
# STEP 6: Test rig add (optional - needs real repo)
|
||||
# ============================================
|
||||
log "Testing rig add with sample repo..."
|
||||
|
||||
# Use a small public repo for testing
|
||||
if gt rig add test-rig --remote=https://github.com/steveyegge/beads.git 2>&1; then
|
||||
check "gt rig add works"
|
||||
|
||||
# Verify rig structure
|
||||
if [[ -d "beads" ]]; then
|
||||
check "Rig directory created"
|
||||
fi
|
||||
else
|
||||
warn "gt rig add failed (might need auth)"
|
||||
fi
|
||||
|
||||
# ============================================
|
||||
# STEP 7: Claude Code CLI Check
|
||||
# ============================================
|
||||
log "Checking Claude Code CLI..."
|
||||
|
||||
if command -v claude &> /dev/null; then
|
||||
check "Claude Code CLI found: $(claude --version 2>/dev/null || echo 'installed')"
|
||||
else
|
||||
warn "Claude Code CLI not installed"
|
||||
echo " Install from: https://claude.ai/code"
|
||||
echo " Gas Town works without it, but agents won't spawn"
|
||||
fi
|
||||
|
||||
# ============================================
|
||||
# Cleanup
|
||||
# ============================================
|
||||
log "Cleaning up test workspace..."
|
||||
rm -rf "$TEST_DIR"
|
||||
check "Cleanup complete"
|
||||
|
||||
# ============================================
|
||||
# Summary
|
||||
# ============================================
|
||||
echo
|
||||
echo "================================================"
|
||||
echo " Installation Test Complete"
|
||||
echo "================================================"
|
||||
echo
|
||||
echo "Prerequisites installed:"
|
||||
echo " - Go: $(go version | grep -oP 'go[0-9]+\.[0-9]+\.[0-9]+')"
|
||||
echo " - Git: $(git --version | grep -oP '[0-9]+\.[0-9]+\.[0-9]+')"
|
||||
echo " - tmux: $(tmux -V | grep -oP '[0-9]+\.[0-9]+')"
|
||||
echo " - beads: $(bd --version 2>/dev/null | grep -oP '[0-9]+\.[0-9]+\.[0-9]+' || echo 'installed')"
|
||||
echo " - gt: installed"
|
||||
if command -v claude &> /dev/null; then
|
||||
echo " - Claude Code: installed"
|
||||
else
|
||||
echo " - Claude Code: NOT INSTALLED (optional for basic usage)"
|
||||
fi
|
||||
echo
|
||||
echo "Gas Town is ready to use!"
|
||||
echo " gt install ~/my-workspace"
|
||||
echo " cd ~/my-workspace"
|
||||
echo " gt rig add myproject --remote=<url>"
|
||||
echo
|
||||
Reference in New Issue
Block a user