Repository files, collaboration, releases and project activity.
ARCHFORGE HISTORY
Blame · scripts/rollback.sh
Branch main · the Commit author is not necessarily a verified ArchForge account.
e59b7f7cc6archadmin2026-10-11
1 #!/usr/bin/env bashe59b7f7cc6archadmin2026-10-11
2 set -Eeuo pipefaile59b7f7cc6archadmin2026-10-11
3 [[ $EUID -eq 0 ]] || { echo 'Use sudo.' >&2;exit 1; }e59b7f7cc6archadmin2026-10-11
4 BASE=/opt/archforge-statuse59b7f7cc6archadmin2026-10-11
5 [[ -f "$BASE/previous-release" ]] || { echo 'No previous release snapshot.' >&2;exit 1; }e59b7f7cc6archadmin2026-10-11
6 SNAP=$(cat "$BASE/previous-release")e59b7f7cc6archadmin2026-10-11
7 [[ "$SNAP" == "$BASE"/releases/release-* && -d "$SNAP" ]] || { echo 'Invalid rollback path.' >&2;exit 1; }e59b7f7cc6archadmin2026-10-11
8 read -rp 'Roll back application code (database remains unchanged)? Type ROLLBACK: ' ANSWERe59b7f7cc6archadmin2026-10-11
9 [[ "$ANSWER" == ROLLBACK ]] || exit 1e59b7f7cc6archadmin2026-10-11
10 systemctl stop archforge-statuse59b7f7cc6archadmin2026-10-11
11 mv "$BASE/app" "$BASE/releases/undone-$(date -u +%Y%m%d-%H%M%S)"e59b7f7cc6archadmin2026-10-11
12 mv "$SNAP" "$BASE/app"e59b7f7cc6archadmin2026-10-11
13 rm -f "$BASE/previous-release"e59b7f7cc6archadmin2026-10-11
14 systemctl start archforge-statuse59b7f7cc6archadmin2026-10-11
15 echo 'Rollback completed. If schema changes are incompatible, use restore.sh with a matching backup.'