diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 5c6e2cc..1bb5ead 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -44,8 +44,6 @@ jobs: PROD_VPS_PASSWORD: ${{ secrets.PROD_VPS_PASSWORD }} PROD_PUBLIC_ORIGIN: ${{ secrets.PROD_PUBLIC_ORIGIN }} PROD_TELEGRAM_BOT_TOKEN: ${{ secrets.PROD_TELEGRAM_BOT_TOKEN }} - PROD_TELEGRAM_BOT_USERNAME: ${{ secrets.PROD_TELEGRAM_BOT_USERNAME }} - PROD_TELEGRAM_MINI_APP_SHORT_NAME: ${{ secrets.PROD_TELEGRAM_MINI_APP_SHORT_NAME }} run: | missing=() for name in \ @@ -53,9 +51,7 @@ jobs: PROD_VPS_HOST \ PROD_VPS_PASSWORD \ PROD_PUBLIC_ORIGIN \ - PROD_TELEGRAM_BOT_TOKEN \ - PROD_TELEGRAM_BOT_USERNAME \ - PROD_TELEGRAM_MINI_APP_SHORT_NAME + PROD_TELEGRAM_BOT_TOKEN do if [[ -z "${!name}" ]]; then missing+=("$name") @@ -80,14 +76,10 @@ jobs: PROD_VPS_PASSWORD: ${{ secrets.PROD_VPS_PASSWORD }} PROD_PUBLIC_ORIGIN: ${{ secrets.PROD_PUBLIC_ORIGIN }} PROD_TELEGRAM_BOT_TOKEN: ${{ secrets.PROD_TELEGRAM_BOT_TOKEN }} - PROD_TELEGRAM_BOT_USERNAME: ${{ secrets.PROD_TELEGRAM_BOT_USERNAME }} - PROD_TELEGRAM_MINI_APP_SHORT_NAME: ${{ secrets.PROD_TELEGRAM_MINI_APP_SHORT_NAME }} run: | bash ./scripts/deploy-prod.sh \ "$PROD_VPS_USER" \ "$PROD_VPS_HOST" \ "$PROD_VPS_PASSWORD" \ "$PROD_TELEGRAM_BOT_TOKEN" \ - "$PROD_TELEGRAM_BOT_USERNAME" \ - "$PROD_TELEGRAM_MINI_APP_SHORT_NAME" \ "$PROD_PUBLIC_ORIGIN" diff --git a/scripts/deploy-prod.sh b/scripts/deploy-prod.sh index f10b2da..9a9c9a2 100644 --- a/scripts/deploy-prod.sh +++ b/scripts/deploy-prod.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash set -euo pipefail -if [[ $# -lt 6 ]]; then - echo "Usage: $0 [public-origin]" >&2 +if [[ $# -lt 4 ]]; then + echo "Usage: $0 [public-origin]" >&2 exit 1 fi @@ -10,18 +10,24 @@ SSH_USER="$1" SSH_HOST="$2" SSH_PASSWORD="$3" TELEGRAM_BOT_TOKEN="$4" -TELEGRAM_BOT_USERNAME="$5" -TELEGRAM_MINI_APP_SHORT_NAME="$6" -PUBLIC_ORIGIN="${7:-https://spawn-dock.w3voice.net}" +PUBLIC_ORIGIN="${5:-https://spawn-dock.w3voice.net}" TARGET_DIR="/srv/spawndock-api" BOT_SECRET="$(openssl rand -hex 24)" BOT_CONTROL_PLANE_URL="http://mcp-server:3000" PUBLIC_HOST=":80" +TELEGRAM_MINI_APP_SHORT_NAME="tma" if [[ "$PUBLIC_ORIGIN" =~ ^https://([^/]+)$ ]]; then PUBLIC_HOST="${BASH_REMATCH[1]}" fi +TELEGRAM_BOT_USERNAME="$( + curl -fsS "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/getMe" \ + | python3 -c 'import json, sys; data = json.load(sys.stdin); result = data.get("result") or {}; username = result.get("username"); +if not data.get("ok") or not username: raise SystemExit("Could not resolve Telegram bot username from token"); +print(username, end="")' +)" + ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" TMP_ARCHIVE="$(mktemp /tmp/spawndock-api.XXXXXX.tar.gz)" TMP_ENV="$(mktemp /tmp/spawndock-api.env.XXXXXX)"