diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 0c4ed26..acfbcaa 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -536,31 +536,57 @@ jobs: # 本地预检查:ssh 先连上跑 whoami 确认连通,避免 20 分钟后才发现连不上 ssh "${SSH_OPTS[@]}" "${DEPLOY_USER}@${DEPLOY_HOST}" "whoami; docker --version; docker compose version" - # 把变量作为 heredoc 脚本的输入传过去,远端展开我们需要的值 + # 关键修复:远端 bash 前置 ENV=val 语法在 dash/sh 远端不认, + # 改为先把变量用 printf 写到远端 /tmp/deploy_env.$$ 再远端 source 它,100% 可靠 + ENV_SH="/tmp/deploy_env_$$" + # 注意:${IMAGE_NEW} / ${DEPLOY_PATH} 等在本地 shell 展开,不是远端,所以 heredoc 用 "" 双引号 + ssh "${SSH_OPTS[@]}" "${DEPLOY_USER}@${DEPLOY_HOST}" "cat > ${ENV_SH}" </dev/null || sudo mkdir -p "${DEPLOY_DIR}" 2>/dev/null || true cd "${DEPLOY_DIR}" @@ -665,7 +691,7 @@ jobs: echo " printf 'services:\\n voicehub:\\n image: \\n' > docker-compose.override.yml" echo " docker compose up -d" echo "=================================================================" - REMOTE_SCRIPT + REMOTE_SCRIPT_MAIN # 清理私钥临时文件 rm -f "${SSH_KEY_FILE}"