# 🚀 Pull-Based Deployment - Quick Start

**Get deployed in 15 minutes!**

---

## 📋 What You Need

- ✅ GitHub account with repository
- ✅ Local VPS with aaPanel installed
- ✅ 15 minutes
- ✅ Root access to VPS

---

## 🎯 5-Step Setup

### Step 1: Create GitHub Token (2 min)

1. Go to: https://github.com/settings/tokens
2. Click "Generate new token (classic)"
3. Note: `BTM Deployment`
4. Scope: ✅ `repo`
5. Click "Generate token"
6. **Copy the token** (save it!)

---

### Step 2: Setup VPS (3 min)

```bash
# SSH to VPS
ssh root@YOUR_VPS_IP

# Install tools
apt-get update && apt-get install -y curl jq tar git bc

# Create token file
echo "YOUR_GITHUB_TOKEN_HERE" > /root/.github_token
chmod 600 /root/.github_token

# Create directories
mkdir -p /www/wwwroot/btm-koperasi{,-backup,-releases}
chown -R www:www /www/wwwroot/btm-koperasi*
```

---

### Step 3: Download Deploy Script (1 min)

```bash
# Download script
curl -L https://raw.githubusercontent.com/YOUR_USERNAME/btm-koperasi/main/deploy/deploy.sh \
  -o /usr/local/bin/deploy.sh

chmod +x /usr/local/bin/deploy.sh

# Configure (edit YOUR_USERNAME)
nano /usr/local/bin/deploy.sh
```

Update line 23:
```bash
GITHUB_REPO="YOUR_USERNAME/btm-koperasi"
```

Save (Ctrl+X, Y, Enter)

---

### Step 4: First Deployment (5 min)

```bash
# Deploy!
/usr/local/bin/deploy.sh main
```

Wait for completion (~5 minutes)

---

### Step 5: Configure aaPanel (4 min)

1. Login: `http://YOUR_VPS_IP:8888`
2. Website → Add site
3. **Root**: `/www/wwwroot/btm-koperasi/public`
4. **PHP**: 8.3
5. **SSL**: Let's Encrypt (optional)

---

## ✅ Done! Test It

```bash
# Check version
cat /www/wwwroot/btm-koperasi/.deployed_version

# Test in browser
http://YOUR_VPS_IP
```

---

## 🎯 Daily Usage

### Deploy New Version

```bash
# Push code to GitHub
git push origin main

# Wait for CI (creates release)
# Then on VPS:
./deploy.sh main
```

### Rollback

```bash
./deploy.sh --rollback
```

### List Releases

```bash
./deploy.sh --list
```

### Help

```bash
./deploy.sh --help
```

---

## 📊 Deployment Flow

```
Push to GitHub
    ↓
CI runs tests (~5 min)
    ↓
Release created
    ↓
On VPS: ./deploy.sh main
    ↓
✅ Deployed! (~5 min)
```

**Total**: ~10 minutes from push to production

---

## 🔧 Common Commands

| Command | Purpose |
|---------|---------|
| `./deploy.sh main` | Deploy from main |
| `./deploy.sh develop` | Deploy from develop |
| `./deploy.sh --rollback` | Rollback |
| `./deploy.sh --list` | List releases |
| `./deploy.sh --help` | Show help |

---

## 📝 Configuration Files

| File | Location | Purpose |
|------|----------|---------|
| Deploy Script | `/usr/local/bin/deploy.sh` | Main deployment |
| GitHub Token | `/root/.github_token` | Authentication |
| App Directory | `/www/wwwroot/btm-koperasi` | Application |
| Backups | `/www/wwwroot/btm-koperasi-backup` | Backups |
| Releases | `/www/wwwroot/btm-koperasi-releases` | Release packages |

---

## 🐛 Quick Troubleshooting

| Issue | Solution |
|-------|----------|
| Token error | Check `/root/.github_token` exists and is valid |
| No releases | Ensure CI workflow created a release |
| Permission denied | `chown -R www:www /www/wwwroot/btm-koperasi` |
| 502 error | `systemctl restart php8.3-fpm` |

---

## 📖 Full Documentation

- **Complete Setup**: [PULL_DEPLOYMENT_SETUP.md](PULL_DEPLOYMENT_SETUP.md)
- **Full Guide**: [LOCAL_DEPLOYMENT_GUIDE.md](LOCAL_DEPLOYMENT_GUIDE.md)
- **Quick Reference**: [LOCAL_DEPLOYMENT_QUICKREF.md](LOCAL_DEPLOYMENT_QUICKREF.md)
- **All Options**: [LOCAL_DEPLOYMENT_OPTIONS.md](LOCAL_DEPLOYMENT_OPTIONS.md)

---

## 🎉 You're Ready!

**Deployment time**: ~10 minutes
**Setup time**: ~15 minutes
**Complexity**: Low

**Next**: Push code and deploy! 🚀
