Rollback comments observer margin
This commit is contained in:
@@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set +e
|
||||||
|
ssh_bin=ssh
|
||||||
|
remote_server=[email protected]
|
||||||
|
key=/tmp/skinbase-deploy-ssh/identities/id_ed25519
|
||||||
|
opts=(-o BatchMode=yes -o StrictHostKeyChecking=accept-new -o ConnectTimeout=15 -o IdentitiesOnly=yes)
|
||||||
|
if [[ -S /tmp/skinbase-deploy-ssh/mux-klevze_server3.klevze.si.sock ]]; then
|
||||||
|
opts+=(-o ControlPath=/tmp/skinbase-deploy-ssh/mux-klevze_server3.klevze.si.sock)
|
||||||
|
fi
|
||||||
|
if [[ -f "$key" ]]; then
|
||||||
|
opts+=(-i "$key")
|
||||||
|
fi
|
||||||
|
|
||||||
|
"$ssh_bin" "${opts[@]}" "$remote_server" 'sudo -n -l'
|
||||||
|
echo EXIT:$?
|
||||||
|
echo '--- ps ---'
|
||||||
|
"$ssh_bin" "${opts[@]}" "$remote_server" "ps -ef | grep -E 'ssr|inertia|supervisor' | grep -v grep"
|
||||||
|
echo '--- status ---'
|
||||||
|
"$ssh_bin" "${opts[@]}" "$remote_server" 'sudo -n /usr/bin/supervisorctl status'
|
||||||
|
echo '--- restart ---'
|
||||||
|
"$ssh_bin" "${opts[@]}" "$remote_server" 'sudo -n /usr/bin/supervisorctl restart skinbase-ssr; echo rc=$?'
|
||||||
@@ -1086,6 +1086,60 @@ printf ' -> Pointed %s at %s\n' "$REMOTE_FOLDER" "$CURRENT_LINK"
|
|||||||
EOF_PUBLIC_LINK
|
EOF_PUBLIC_LINK
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Supervisor listens on a root socket. The app user (skinbase) cannot talk to it,
|
||||||
|
# and artisan inertia:start-ssr fights the supervised process. Restart as the
|
||||||
|
# SSH login user with passwordless sudo supervisorctl.
|
||||||
|
restart_remote_inertia_ssr() {
|
||||||
|
[[ "$skip_ssr_restart" -eq 0 ]] || return 0
|
||||||
|
|
||||||
|
log_step "Restarting Inertia SSR via Supervisor ($ssr_supervisor_program)"
|
||||||
|
|
||||||
|
ssh_remote "$remote_server" env \
|
||||||
|
SSR_PROGRAM="$(printf '%q' "$ssr_supervisor_program")" \
|
||||||
|
bash -s <<'EOF_SSR_RESTART'
|
||||||
|
set -euo pipefail
|
||||||
|
cd /tmp >/dev/null 2>&1 || cd / >/dev/null 2>&1 || true
|
||||||
|
|
||||||
|
supervisorctl_bin="/usr/bin/supervisorctl"
|
||||||
|
if [[ ! -x "$supervisorctl_bin" ]]; then
|
||||||
|
supervisorctl_bin="$(command -v supervisorctl 2>/dev/null || true)"
|
||||||
|
fi
|
||||||
|
[[ -n "$supervisorctl_bin" ]] || {
|
||||||
|
printf 'ERROR: supervisorctl not found on the remote host.\n' >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
ctl() {
|
||||||
|
sudo -n "$supervisorctl_bin" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
status_line="$(ctl status "$SSR_PROGRAM" 2>/dev/null || true)"
|
||||||
|
if ! printf '%s\n' "$status_line" | grep -q "^${SSR_PROGRAM}[[:space:]]"; then
|
||||||
|
printf 'ERROR: Supervisor program %s not found, or sudo -n supervisorctl is not permitted for this SSH user.\n' "$SSR_PROGRAM" >&2
|
||||||
|
ctl status >&2 || true
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
ctl restart "$SSR_PROGRAM"
|
||||||
|
|
||||||
|
status=""
|
||||||
|
i=0
|
||||||
|
while [[ "$i" -lt 10 ]]; do
|
||||||
|
status="$(ctl status "$SSR_PROGRAM" 2>/dev/null | awk '{print $2}' || true)"
|
||||||
|
if [[ "$status" == "RUNNING" ]]; then
|
||||||
|
printf ' -> Supervisor program %s is RUNNING\n' "$SSR_PROGRAM"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
i=$((i + 1))
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
printf 'ERROR: Supervisor program %s did not reach RUNNING after restart (status: %s).\n' "$SSR_PROGRAM" "${status:-unknown}" >&2
|
||||||
|
ctl status "$SSR_PROGRAM" >&2 || true
|
||||||
|
exit 1
|
||||||
|
EOF_SSR_RESTART
|
||||||
|
}
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--mode)
|
--mode)
|
||||||
@@ -1387,8 +1441,6 @@ ssh_remote_app_bash \
|
|||||||
COMPOSER_BIN="$(printf '%q' "$composer_bin")" \
|
COMPOSER_BIN="$(printf '%q' "$composer_bin")" \
|
||||||
RUN_REMOTE_MIGRATIONS="$run_remote_migrations" \
|
RUN_REMOTE_MIGRATIONS="$run_remote_migrations" \
|
||||||
SKIP_MAINTENANCE="$skip_maintenance" \
|
SKIP_MAINTENANCE="$skip_maintenance" \
|
||||||
SKIP_SSR_RESTART="$skip_ssr_restart" \
|
|
||||||
SSR_SUPERVISOR_PROGRAM="$(printf '%q' "$ssr_supervisor_program")" \
|
|
||||||
DEPLOY_MODE="$(printf '%q' "$deploy_mode")" \
|
DEPLOY_MODE="$(printf '%q' "$deploy_mode")" \
|
||||||
RUN_MEILISEARCH_SETUP="$run_meilisearch_setup" \
|
RUN_MEILISEARCH_SETUP="$run_meilisearch_setup" \
|
||||||
FULL_UPGRADE_PRE_HOOK="$(printf '%q' "$full_upgrade_pre_hook")" \
|
FULL_UPGRADE_PRE_HOOK="$(printf '%q' "$full_upgrade_pre_hook")" \
|
||||||
@@ -1913,24 +1965,7 @@ purge_noncurrent_release_runtime_junk() {
|
|||||||
done < <(find "${REMOTE_RELEASE_ROOT}/releases" -mindepth 1 -maxdepth 1 -type d -print 2>/dev/null || true)
|
done < <(find "${REMOTE_RELEASE_ROOT}/releases" -mindepth 1 -maxdepth 1 -type d -print 2>/dev/null || true)
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve_ssr_supervisor_target() {
|
|
||||||
local preferred_program="${SSR_SUPERVISOR_PROGRAM:-skinbase-ssr}"
|
|
||||||
local detected_program=""
|
|
||||||
|
|
||||||
if supervisorctl status "$preferred_program" >/dev/null 2>&1; then
|
|
||||||
printf '%s' "$preferred_program"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
detected_program="$(supervisorctl status 2>/dev/null | awk 'tolower($1) ~ /(ssr|inertia)/ { print $1; exit }')"
|
|
||||||
|
|
||||||
if [[ -n "$detected_program" ]]; then
|
|
||||||
printf '%s' "$detected_program"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
prune_old_releases() {
|
prune_old_releases() {
|
||||||
local -a releases=()
|
local -a releases=()
|
||||||
@@ -2088,35 +2123,6 @@ log_step "Restarting queue workers"
|
|||||||
log_step "Restarting Horizon workers"
|
log_step "Restarting Horizon workers"
|
||||||
"$PHP_BIN" artisan horizon:terminate >/dev/null 2>&1 || true
|
"$PHP_BIN" artisan horizon:terminate >/dev/null 2>&1 || true
|
||||||
|
|
||||||
if [[ "${SKIP_SSR_RESTART:-0}" -eq 0 ]]; then
|
|
||||||
log_step "Restarting Inertia SSR server"
|
|
||||||
restart_ssr_with_artisan() {
|
|
||||||
"$PHP_BIN" artisan inertia:stop-ssr >/dev/null 2>&1 || true
|
|
||||||
nohup "$PHP_BIN" artisan inertia:start-ssr >/tmp/skinbase-inertia-ssr.log 2>&1 < /dev/null &
|
|
||||||
}
|
|
||||||
|
|
||||||
if command -v supervisorctl >/dev/null 2>&1; then
|
|
||||||
ssr_supervisor_target="$(resolve_ssr_supervisor_target || true)"
|
|
||||||
|
|
||||||
if [[ -n "$ssr_supervisor_target" ]]; then
|
|
||||||
if [[ "$ssr_supervisor_target" != "${SSR_SUPERVISOR_PROGRAM:-skinbase-ssr}" ]]; then
|
|
||||||
printf ' -> Using detected Supervisor program: %s\n' "$ssr_supervisor_target"
|
|
||||||
fi
|
|
||||||
|
|
||||||
supervisorctl restart "$ssr_supervisor_target" || {
|
|
||||||
log_warn "supervisorctl restart ${ssr_supervisor_target} failed — falling back to artisan SSR restart."
|
|
||||||
restart_ssr_with_artisan || log_warn "artisan SSR restart failed — SSR server may need a manual restart."
|
|
||||||
}
|
|
||||||
else
|
|
||||||
log_warn "Supervisor program '${SSR_SUPERVISOR_PROGRAM:-skinbase-ssr}' not found — falling back to artisan SSR restart. Set SSR_SUPERVISOR_PROGRAM if the server uses a different name."
|
|
||||||
restart_ssr_with_artisan || log_warn "artisan SSR restart failed — add deploy/supervisor/skinbase-ssr.conf to /etc/supervisor/conf.d/ and run 'supervisorctl reread && supervisorctl update'."
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
log_warn "supervisorctl not available — falling back to artisan SSR restart."
|
|
||||||
restart_ssr_with_artisan || log_warn "artisan SSR restart failed — SSR server may need a manual restart."
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$RUN_MEILISEARCH_SETUP" -eq 1 ]]; then
|
if [[ "$RUN_MEILISEARCH_SETUP" -eq 1 ]]; then
|
||||||
if [[ -z "${MEILISEARCH_MODELS_CSV:-}" ]]; then
|
if [[ -z "${MEILISEARCH_MODELS_CSV:-}" ]]; then
|
||||||
MEILISEARCH_MODELS_CSV='App\Models\Artwork,App\Models\User,App\Models\Group,App\Models\Post,App\Models\Message'
|
MEILISEARCH_MODELS_CSV='App\Models\Artwork,App\Models\User,App\Models\Group,App\Models\Post,App\Models\Message'
|
||||||
@@ -2238,6 +2244,9 @@ if [[ "$remote_deploy_status" -ne 0 ]]; then
|
|||||||
fi
|
fi
|
||||||
mark_phase_complete "remote-switch"
|
mark_phase_complete "remote-switch"
|
||||||
|
|
||||||
|
restart_remote_inertia_ssr
|
||||||
|
mark_phase_complete "ssr-restart"
|
||||||
|
|
||||||
# Remote deploy completed successfully; no need for the local DB-maintenance recovery path.
|
# Remote deploy completed successfully; no need for the local DB-maintenance recovery path.
|
||||||
db_sync_remote_maintenance=0
|
db_sync_remote_maintenance=0
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user