Files
bee/scripts/deploy.sh
Michael Chus cf9b54b600 Use last ramp-step SDR snapshot for PSU loaded power; add deploy script
- benchmark.go: retain sdrLastStep from final ramp step instead of
  re-sampling after test when GPUs are already idle
- scripts/deploy.sh: build+deploy bee binary to remote host over SSH

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 21:26:44 +03:00

65 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
REMOTE_USER="bee"
REMOTE_BIN="/usr/local/bin/bee"
LOCAL_BIN="audit/bee"
SERVICES="bee-audit bee-web"
# --- IP ---
if [[ $# -ge 1 ]]; then
HOST="$1"
else
read -rp "IP адрес хоста: " HOST
fi
[[ -z "$HOST" ]] && { echo "Ошибка: IP не указан"; exit 1; }
# --- SSH options ---
SSH_OPTS=(-o StrictHostKeyChecking=no -o ConnectTimeout=10)
# Проверяем, нужен ли пароль
SSH_PASS=""
if ! ssh "${SSH_OPTS[@]}" -o BatchMode=yes "${REMOTE_USER}@${HOST}" true 2>/dev/null; then
if command -v sshpass &>/dev/null; then
read -rsp "Пароль для ${REMOTE_USER}@${HOST}: " SSH_PASS
echo
SSH_CMD=(sshpass -p "$SSH_PASS" ssh "${SSH_OPTS[@]}")
SCP_CMD=(sshpass -p "$SSH_PASS" scp "${SSH_OPTS[@]}")
else
echo "sshpass не установлен. Введите пароль вручную при запросе (или установите SSH-ключ)."
SSH_CMD=(ssh "${SSH_OPTS[@]}")
SCP_CMD=(scp "${SSH_OPTS[@]}")
fi
else
SSH_CMD=(ssh "${SSH_OPTS[@]}")
SCP_CMD=(scp "${SSH_OPTS[@]}")
fi
REMOTE="${REMOTE_USER}@${HOST}"
# --- Build ---
echo "==> Сборка бинарника..."
(
cd audit
VERSION=$(sh ./scripts/resolve-version.sh 2>/dev/null || echo "dev")
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
go build -ldflags "-X main.Version=${VERSION}" -o bee ./cmd/bee
)
echo " OK: $(ls -lh "${LOCAL_BIN}" | awk '{print $5, $9}')"
# --- Deploy ---
echo "==> Копирование на ${REMOTE}..."
"${SCP_CMD[@]}" "${LOCAL_BIN}" "${REMOTE}:/tmp/bee-new"
echo "==> Замена бинарника и перезапуск сервисов..."
"${SSH_CMD[@]}" "$REMOTE" bash -s <<EOF
set -e
sudo mv /tmp/bee-new ${REMOTE_BIN}
sudo chmod +x ${REMOTE_BIN}
sudo systemctl restart ${SERVICES}
sleep 2
systemctl status ${SERVICES} --no-pager -l
EOF
echo "==> Готово."