File size: 2,487 Bytes
071ba6b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8787bd3
 
071ba6b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8787bd3
071ba6b
 
 
 
8787bd3
071ba6b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8787bd3
 
071ba6b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/bash
# Deploy FATHOM env server to HuggingFace Docker Space — ENV-10.
# CHECKPOINT: human-action required.
#
# Prerequisites:
#   export HF_TOKEN=hf_xxx          (write token from hf.co/settings/tokens)
#   export FATHOM_SPACE_NAME=...    (e.g. "yourorg/fathom-env")
#   huggingface-cli installed (pip install huggingface_hub[cli])
#
# Usage:
#   bash scripts/deploy_env_space.sh
#   FATHOM_SPACE_NAME=myorg/fathom-env bash scripts/deploy_env_space.sh

set -euo pipefail

SPACE_NAME="${FATHOM_SPACE_NAME:-fathom/fathom-env}"
TOKEN="${HF_TOKEN:?HF_TOKEN environment variable is required}"
export FATHOM_SPACE_NAME="${SPACE_NAME}"
export HF_TOKEN="${TOKEN}"

echo "==> Deploying FATHOM env to HF Space: ${SPACE_NAME}"

# Step 1: Verify HF login
huggingface-cli whoami --token "${TOKEN}" || {
    echo "ERROR: HF_TOKEN is invalid or lacks write permission."
    exit 1
}

# Step 2: Copy space files to a temp staging dir
STAGING=$(mktemp -d)
cp space/Dockerfile "${STAGING}/Dockerfile"
cp space/README.md "${STAGING}/README.md"

# Copy env server source
cp -r env "${STAGING}/env"
cp pyproject.toml "${STAGING}/pyproject.toml"
cp -r configs "${STAGING}/configs"
export STAGING

# Step 3: Push to HF Space (creates if not exists)
python - <<'PYEOF'
import os
from huggingface_hub import HfApi

api = HfApi(token=os.environ["HF_TOKEN"])
space_name = os.environ["FATHOM_SPACE_NAME"]
staging = os.environ["STAGING"]

# Create or update Space
try:
    api.create_repo(repo_id=space_name, repo_type="space", space_sdk="docker", exist_ok=True)
    print(f"Space {space_name} ensured.")
except Exception as e:
    print(f"create_repo: {e}")

# Upload files
import os as _os
for root, dirs, files in _os.walk(staging):
    for fname in files:
        local = _os.path.join(root, fname)
        remote = _os.path.relpath(local, staging)
        api.upload_file(path_or_fileobj=local, path_in_repo=remote,
                        repo_id=space_name, repo_type="space",
                        commit_message=f"Deploy {remote}")
        print(f"  uploaded: {remote}")

print(f"Deploy complete. Space URL: https://huggingface.co/spaces/{space_name}")
PYEOF

python - <<'PYEOF2'
import os
SPACE_NAME = os.environ["FATHOM_SPACE_NAME"]
print(f"\n==> RESUME SIGNAL: set FATHOM_SPACE_URL=https://{SPACE_NAME.replace('/', '-')}.hf.space")
print(f"    Test: curl -s https://{SPACE_NAME.replace('/', '-')}.hf.space/healthz")
PYEOF2

echo "==> Cleaning staging dir"
rm -rf "${STAGING}"
echo "==> Done."