fix(deploy): 固化远程脚本变量展开边界
All checks were successful
CI / ci (push) Successful in 1m22s

将远程部署脚本切换为单引号 heredoc 并显式传入所需环境变量,避免本地 shell 在 set -u 下提前展开导致健康检查变量未定义。

Made-with: Cursor
This commit is contained in:
2026-04-28 05:33:38 +08:00
parent 020d219d3d
commit e6d0969a0e

View File

@@ -55,7 +55,7 @@ jobs:
ssh -p "${DEPLOY_PORT:-22}" "${DEPLOY_USER}@${DEPLOY_HOST}" "mkdir -p \"${DEPLOY_PATH}/deploy/docker\""
scp -P "${DEPLOY_PORT:-22}" deploy/docker/docker-compose.yml "${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_PATH}/deploy/docker/docker-compose.yml"
ssh -p "${DEPLOY_PORT:-22}" "${DEPLOY_USER}@${DEPLOY_HOST}" <<EOF
ssh -p "${DEPLOY_PORT:-22}" "${DEPLOY_USER}@${DEPLOY_HOST}" "DEPLOY_PATH='${DEPLOY_PATH}' IMAGE_REPO='${IMAGE_REPO}' IMAGE_TAG='${IMAGE_TAG}' REGISTRY='${REGISTRY}' REGISTRY_USERNAME='${REGISTRY_USERNAME}' REGISTRY_PASSWORD='${REGISTRY_PASSWORD}' bash -se" <<'EOF'
set -euo pipefail
cd "${DEPLOY_PATH}"
@@ -69,18 +69,18 @@ jobs:
docker compose -f deploy/docker/docker-compose.yml --env-file deploy/docker/.env pull app
docker compose -f deploy/docker/docker-compose.yml --env-file deploy/docker/.env up -d app
docker compose -f deploy/docker/docker-compose.yml ps
HEALTH_URL="http://127.0.0.1:\${HOST_BIND_PORT:-3000}/api/docs"
HEALTH_URL="http://127.0.0.1:${HOST_BIND_PORT:-3000}/api/docs"
HEALTH_OK=0
for i in \$(seq 1 30); do
if curl -fsS "\${HEALTH_URL}" >/dev/null; then
for i in $(seq 1 30); do
if curl -fsS "${HEALTH_URL}" >/dev/null; then
HEALTH_OK=1
break
fi
sleep 2
done
if [ "\${HEALTH_OK}" -ne 1 ]; then
if [ "${HEALTH_OK}" -ne 1 ]; then
docker compose -f deploy/docker/docker-compose.yml --env-file deploy/docker/.env logs --tail=200 app || true
echo "Health check failed: \${HEALTH_URL}"
echo "Health check failed: ${HEALTH_URL}"
exit 1
fi
EOF