From 5f9e8db7e5f7a9ba7e2aef12c973dcfb900487eb Mon Sep 17 00:00:00 2001 From: thomas Date: Mon, 18 May 2026 15:17:13 +0800 Subject: [PATCH] CI: install rsync and openssh-client before deploy Gitea/act runners often lack rsync; apt/apk/dnf install step runs before ssh/rsync in deploy-talkpro.sh. Co-authored-by: Cursor --- .gitea/workflows/deploy-talkpro.yml | 20 ++++++++++++++++++++ scripts/deploy-talkpro.sh | 3 +++ 2 files changed, 23 insertions(+) diff --git a/.gitea/workflows/deploy-talkpro.yml b/.gitea/workflows/deploy-talkpro.yml index 1175de3..0280ea0 100644 --- a/.gitea/workflows/deploy-talkpro.yml +++ b/.gitea/workflows/deploy-talkpro.yml @@ -45,6 +45,26 @@ jobs: exit 1 fi + - name: Install rsync and SSH client + run: | + if command -v rsync >/dev/null && command -v ssh >/dev/null; then + echo "rsync and ssh already installed" + exit 0 + fi + if command -v apt-get >/dev/null 2>&1; then + sudo apt-get update -qq + sudo apt-get install -y -qq rsync openssh-client + elif command -v apk >/dev/null 2>&1; then + sudo apk add --no-cache rsync openssh-client-default + elif command -v dnf >/dev/null 2>&1; then + sudo dnf install -y rsync openssh-clients + else + echo "ERROR: Could not install rsync — apt-get, apk, or dnf required" >&2 + exit 1 + fi + command -v rsync + command -v ssh + - name: Trust host key run: | mkdir -p ~/.ssh diff --git a/scripts/deploy-talkpro.sh b/scripts/deploy-talkpro.sh index a338306..e7b53ab 100755 --- a/scripts/deploy-talkpro.sh +++ b/scripts/deploy-talkpro.sh @@ -50,6 +50,9 @@ else fi npm run build +command -v ssh >/dev/null || { echo "ERROR: ssh not found (install openssh-client)" >&2; exit 127; } +command -v rsync >/dev/null || { echo "ERROR: rsync not found (CI: apt-get install rsync)" >&2; exit 127; } + ssh "${SSH_OPTS[@]}" "${USER}@${HOST}" "mkdir -p ${REMOTE_ROOT}" rsync -avz --delete \