ops: harden deploy exit and rollback handling
This commit is contained in:
+16
-12
@@ -21,9 +21,15 @@ cd "$APP"
|
|||||||
export GIT_SSH_COMMAND="ssh -i $KEY -o IdentitiesOnly=yes -o StrictHostKeyChecking=accept-new"
|
export GIT_SSH_COMMAND="ssh -i $KEY -o IdentitiesOnly=yes -o StrictHostKeyChecking=accept-new"
|
||||||
exec > >(tee -a "$LOG") 2>&1
|
exec > >(tee -a "$LOG") 2>&1
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
set +e
|
||||||
|
git worktree remove --force "$STAGE" >/dev/null 2>&1 || true
|
||||||
|
rm -rf "$STAGE"
|
||||||
|
docker image rm "$API_TEST_IMAGE" "$WEB_TEST_IMAGE" >/dev/null 2>&1 || true
|
||||||
|
}
|
||||||
|
|
||||||
publish_status() {
|
publish_status() {
|
||||||
local rc="${1:-1}"
|
local rc="${1:-1}"
|
||||||
trap - EXIT ERR
|
|
||||||
set +e
|
set +e
|
||||||
|
|
||||||
local outcome="failure"
|
local outcome="failure"
|
||||||
@@ -63,20 +69,21 @@ publish_status() {
|
|||||||
|
|
||||||
rm -f "$status_file" "$log_file"
|
rm -f "$status_file" "$log_file"
|
||||||
}
|
}
|
||||||
trap 'rc=$?; publish_status "$rc"; exit "$rc"' EXIT
|
|
||||||
|
|
||||||
cleanup() {
|
on_exit() {
|
||||||
set +e
|
local rc=$?
|
||||||
git worktree remove --force "$STAGE" >/dev/null 2>&1 || true
|
trap - EXIT ERR
|
||||||
rm -rf "$STAGE"
|
cleanup
|
||||||
docker image rm "$API_TEST_IMAGE" "$WEB_TEST_IMAGE" >/dev/null 2>&1 || true
|
publish_status "$rc"
|
||||||
|
exit "$rc"
|
||||||
}
|
}
|
||||||
trap cleanup RETURN
|
trap on_exit EXIT
|
||||||
|
|
||||||
rollback() {
|
rollback() {
|
||||||
local rc=$?
|
local rc=$?
|
||||||
trap - ERR
|
trap - ERR
|
||||||
PHASE="rollback"
|
PHASE="rollback"
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "============================================================"
|
echo "============================================================"
|
||||||
echo " DH V2 · DEPLOY FALLÓ · ROLLBACK"
|
echo " DH V2 · DEPLOY FALLÓ · ROLLBACK"
|
||||||
@@ -98,13 +105,12 @@ rollback() {
|
|||||||
echo
|
echo
|
||||||
echo "Backup PRE disponible en: $BACKUP"
|
echo "Backup PRE disponible en: $BACKUP"
|
||||||
echo "Las migraciones son forward-only; database-before.dump queda disponible para restauración manual si hiciera falta."
|
echo "Las migraciones son forward-only; database-before.dump queda disponible para restauración manual si hiciera falta."
|
||||||
cleanup
|
|
||||||
exit "$rc"
|
exit "$rc"
|
||||||
}
|
}
|
||||||
trap rollback ERR
|
trap rollback ERR
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "============================================================"
|
echo "============================================================"
|
||||||
echo " DH V2 · DEPLOY DESDE GITHUB · $DEPLOY_REF"
|
echo " DH V2 · DEPLOY DESDE GITHUB · $DEPLOY_REF"
|
||||||
echo "============================================================"
|
echo "============================================================"
|
||||||
|
|
||||||
@@ -133,7 +139,6 @@ echo "Objetivo: $TARGET_SHA"
|
|||||||
if [ "$TARGET_SHA" = "$PREV_SHA" ]; then
|
if [ "$TARGET_SHA" = "$PREV_SHA" ]; then
|
||||||
echo "Producción ya está en el commit autorizado."
|
echo "Producción ya está en el commit autorizado."
|
||||||
PHASE="complete"
|
PHASE="complete"
|
||||||
cleanup
|
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -271,7 +276,6 @@ chmod 600 "$BACKUP"/* "$BACKUP/.env" 2>/dev/null || true
|
|||||||
|
|
||||||
PHASE="complete"
|
PHASE="complete"
|
||||||
trap - ERR
|
trap - ERR
|
||||||
cleanup
|
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "============================================================"
|
echo "============================================================"
|
||||||
|
|||||||
Reference in New Issue
Block a user