fix: fallback deploy image transfer

This commit is contained in:
chenpei 2026-05-29 19:07:01 +08:00
parent 893348b7e2
commit 8280124681

View File

@ -407,6 +407,16 @@ fi
if [ "$SKIP_DEPLOY" != "1" ]; then
start_remote_step "Deploy on Production Server"
log "Ensuring production server can access image $REGISTRY_COMMIT"
if ssh -o StrictHostKeyChecking=no "$PROD_SERVER_USER@$PROD_SERVER_IP" "docker pull '$REGISTRY_COMMIT'" >/tmp/git-deploy-prod-pull.log 2>&1; then
ok "Production server pulled image from registry"
else
warn "Production server could not pull image directly; streaming image from build server"
cat /tmp/git-deploy-prod-pull.log >&2 || true
docker save "$REGISTRY_COMMIT" | ssh -o StrictHostKeyChecking=no "$PROD_SERVER_USER@$PROD_SERVER_IP" "docker load"
ok "Image loaded on production server via SSH stream"
fi
PROD_PAYLOAD="$(cat <<'PROD_SCRIPT'
set -Eeuo pipefail
@ -459,8 +469,12 @@ require_file "$ENV_FILE_PATH"
[ -d "$UPLOADS_MOUNT" ] || fail "Uploads mount does not exist: $UPLOADS_MOUNT"
docker network inspect "$NETWORK_NAME" >/dev/null 2>&1 || fail "Docker network missing: $NETWORK_NAME"
log "Pulling image $REGISTRY_COMMIT"
docker pull "$REGISTRY_COMMIT"
log "Checking image $REGISTRY_COMMIT"
if docker image inspect "$REGISTRY_COMMIT" >/dev/null 2>&1; then
ok "Image already available on production server"
else
docker pull "$REGISTRY_COMMIT"
fi
OLD_IMAGE="$(docker inspect -f '{{.Config.Image}}' "$CONTAINER_NAME" 2>/dev/null || true)"
if [ -n "$OLD_IMAGE" ]; then