File size: 2,279 Bytes
e2ce547
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/env bash
set -euo pipefail

PROJECT_ID="${1:-}"
INSTANCE="${INSTANCE_NAME:-polymarket-collector}"
ZONE="${GCP_ZONE:-us-east1-b}"
MACHINE_TYPE="${GCP_MACHINE_TYPE:-e2-micro}"
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"

if [[ -z "$PROJECT_ID" ]]; then
  echo "Usage: $0 GOOGLE_CLOUD_PROJECT_ID" >&2
  exit 2
fi
if ! command -v gcloud >/dev/null 2>&1; then
  echo "gcloud is required. Run this script from Google Cloud Shell or install the Google Cloud CLI." >&2
  exit 2
fi
if [[ ! -f "$ROOT_DIR/pyproject.toml" ]]; then
  echo "Project files not found next to this script." >&2
  exit 2
fi

ACTIVE_ACCOUNT="$(gcloud auth list --filter=status:ACTIVE --format='value(account)' | head -1)"
if [[ -z "$ACTIVE_ACCOUNT" ]]; then
  echo "No active Google Cloud account. Run: gcloud auth login" >&2
  exit 2
fi

gcloud config set project "$PROJECT_ID" >/dev/null
gcloud services enable compute.googleapis.com --project "$PROJECT_ID"

if ! gcloud compute instances describe "$INSTANCE" --zone "$ZONE" \
  --project "$PROJECT_ID" >/dev/null 2>&1; then
  gcloud compute instances create "$INSTANCE" \
    --project "$PROJECT_ID" \
    --zone "$ZONE" \
    --machine-type "$MACHINE_TYPE" \
    --provisioning-model STANDARD \
    --network-tier STANDARD \
    --image-family ubuntu-2404-lts-amd64 \
    --image-project ubuntu-os-cloud \
    --boot-disk-type pd-standard \
    --boot-disk-size 30GB \
    --metadata enable-oslogin=TRUE \
    --labels app=polymarket-collector
else
  echo "Instance $INSTANCE already exists; updating the collector."
fi

ARCHIVE="$(mktemp --suffix=.tar.gz)"
trap 'rm -f "$ARCHIVE"' EXIT
tar -czf "$ARCHIVE" \
  --exclude=.git --exclude=.venv --exclude=data --exclude='*.egg-info' \
  -C "$ROOT_DIR" .

gcloud compute scp "$ARCHIVE" "$INSTANCE:/tmp/polymarket-collector.tar.gz" \
  --zone "$ZONE" --project "$PROJECT_ID"
gcloud compute ssh "$INSTANCE" --zone "$ZONE" --project "$PROJECT_ID" \
  --command 'workdir=$(mktemp -d); tar -xzf /tmp/polymarket-collector.tar.gz -C "$workdir"; sudo bash "$workdir/scripts/install_vps.sh" "$workdir"'

echo
echo "Deployment complete."
echo "Connect: gcloud compute ssh $INSTANCE --zone $ZONE --project $PROJECT_ID"
echo "The collector uses public data only and has no Polymarket trading key."