nova-sim / deploy.sh
Georg
Track binaries with LFS
c9ee848
#!/bin/bash
# Nova-Sim deployment script (HuggingFace Spaces)
set -e
if [ -z "${BASH_VERSION:-}" ]; then
exec /bin/bash "$0" "$@"
fi
HF_SPACE="gpue/nova-sim"
ENV_FILE="${ENV_FILE:-.env.local}"
exec > >(tee -a deploy.logs) 2>&1
echo "==================================="
echo "Nova-Sim Deployment"
echo "==================================="
echo ""
# Load tokens from env file
if [ -f "${ENV_FILE}" ]; then
set -a
# shellcheck disable=SC1090
source "${ENV_FILE}"
set +a
else
echo "Warning: ${ENV_FILE} not found"
fi
HF_TOKEN="${HF_TOKEN:-${HUGGINGFACE_TOKEN:-}}"
if [ -z "${HF_TOKEN}" ]; then
echo "Error: missing HF token (set HF_TOKEN or HUGGINGFACE_TOKEN)"
exit 1
fi
# Ensure huggingface_hub (and hf CLI) are available via local venv
VENV_DIR=".deploy-venv"
PY_BIN="${VENV_DIR}/bin/python3"
HF_BIN="${VENV_DIR}/bin/hf"
if [ ! -x "${PY_BIN}" ]; then
echo "Creating deploy venv at ${VENV_DIR}..."
python3 -m venv "${VENV_DIR}"
fi
if ! "${PY_BIN}" -c "import huggingface_hub" >/dev/null 2>&1; then
echo "Installing huggingface_hub in deploy venv..."
"${PY_BIN}" -m pip install --quiet huggingface_hub
fi
# Commit local changes before push so Spaces builds the right ref
if [[ -n $(git status -s) ]]; then
echo "Committing changes for Space build context..."
git add Dockerfile requirements.txt mujoco_server.py frontend/index.html README.md .dockerignore
if git diff --cached --quiet; then
echo "No staged changes for Space build context"
else
git commit -m "Prepare HF Space deployment"
echo "✓ Space build context committed"
fi
fi
PUSH_URL="https://user:${HF_TOKEN}@huggingface.co/spaces/${HF_SPACE}"
echo "Pushing to ${HF_SPACE}..."
git push "${PUSH_URL}" HEAD:main --force
echo "✓ Push complete"
echo ""
if [ -x "${HF_BIN}" ]; then
echo "Space status:"
"${HF_BIN}" repo info "spaces/${HF_SPACE}" || true
fi