Add Gitea Actions deploy workflow for talkpro.info
Some checks failed
Deploy to talkpro / build-and-sync (push) Failing after 18s
Some checks failed
Deploy to talkpro / build-and-sync (push) Failing after 18s
Build Astro on push to main/master and rsync dist/ to the marketing server via SSH. Includes deploy-talkpro.sh, env example, and README. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
58
scripts/deploy-talkpro.sh
Executable file
58
scripts/deploy-talkpro.sh
Executable file
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env bash
|
||||
# Build Astro dist/ and rsync to the Talk Pro marketing host (talkpro.info).
|
||||
# Used by Gitea Actions and for manual deploys from this repo.
|
||||
#
|
||||
# Required env:
|
||||
# TALKPRO_HOST e.g. 13.214.179.69
|
||||
# Optional:
|
||||
# TALKPRO_USER default ubuntu
|
||||
# TALKPRO_REMOTE_ROOT default /home/ubuntu/talkpro
|
||||
# TALKPRO_SSH_PRIVATE_KEY PEM contents (CI / Gitea secret)
|
||||
# TALKPRO_SSH_KEY_FILE path to PEM (local)
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
cd "$ROOT"
|
||||
|
||||
HOST="${TALKPRO_HOST:?Set TALKPRO_HOST (server IP or hostname)}"
|
||||
USER="${TALKPRO_USER:-ubuntu}"
|
||||
REMOTE_ROOT="${TALKPRO_REMOTE_ROOT:-/home/ubuntu/talkpro}"
|
||||
[[ -n "$USER" ]] || USER=ubuntu
|
||||
[[ -n "$REMOTE_ROOT" ]] || REMOTE_ROOT=/home/ubuntu/talkpro
|
||||
|
||||
KEY_FILE="${TALKPRO_SSH_KEY_FILE:-}"
|
||||
TMP_KEY=""
|
||||
cleanup() {
|
||||
[[ -n "$TMP_KEY" && -f "$TMP_KEY" ]] && rm -f "$TMP_KEY"
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
if [[ -n "${TALKPRO_SSH_PRIVATE_KEY:-}" ]]; then
|
||||
TMP_KEY="$(mktemp)"
|
||||
chmod 600 "$TMP_KEY"
|
||||
printf '%s\n' "$TALKPRO_SSH_PRIVATE_KEY" > "$TMP_KEY"
|
||||
KEY_FILE="$TMP_KEY"
|
||||
elif [[ -z "$KEY_FILE" || ! -f "$KEY_FILE" ]]; then
|
||||
echo "Set TALKPRO_SSH_PRIVATE_KEY (PEM) or TALKPRO_SSH_KEY_FILE (path)" >&2
|
||||
exit 1
|
||||
fi
|
||||
chmod 600 "$KEY_FILE"
|
||||
|
||||
SSH_OPTS=(-i "$KEY_FILE" -o BatchMode=yes -o StrictHostKeyChecking=accept-new)
|
||||
RSYNC_SSH="ssh -i ${KEY_FILE} -o BatchMode=yes -o StrictHostKeyChecking=accept-new"
|
||||
|
||||
if [[ -f package-lock.json ]]; then
|
||||
npm ci
|
||||
else
|
||||
npm install
|
||||
fi
|
||||
npm run build
|
||||
|
||||
"${SSH[@]}" "${USER}@${HOST}" "mkdir -p ${REMOTE_ROOT}"
|
||||
|
||||
rsync -avz --delete \
|
||||
-e "$RSYNC_SSH" \
|
||||
dist/ \
|
||||
"${USER}@${HOST}:${REMOTE_ROOT}/"
|
||||
|
||||
echo "Deployed dist/ → ${USER}@${HOST}:${REMOTE_ROOT}/"
|
||||
Reference in New Issue
Block a user