feat(deploy): clean Ctrl+C handler kills background xcodebuild
Without this, Ctrl+C would kill deploy.sh but leave xcodebuild running as orphan, eating CPU and locking DerivedData.
This commit is contained in:
parent
24a52a5bae
commit
6255006cad
@ -54,6 +54,23 @@ set -euo pipefail
|
|||||||
# ERR-Trap: zeigt die exakte Zeile + Command der set -e ausgelöst hat
|
# ERR-Trap: zeigt die exakte Zeile + Command der set -e ausgelöst hat
|
||||||
trap 'rc=$?; echo "" >&2; echo "✗ deploy.sh aborted (rc=$rc)" >&2; echo " line $LINENO: $BASH_COMMAND" >&2; echo " call stack:" >&2; for ((i=0;i<${#FUNCNAME[@]};i++)); do echo " #$i ${FUNCNAME[$i]:-main} (${BASH_SOURCE[$i]}:${BASH_LINENO[$i]})" >&2; done' ERR
|
trap 'rc=$?; echo "" >&2; echo "✗ deploy.sh aborted (rc=$rc)" >&2; echo " line $LINENO: $BASH_COMMAND" >&2; echo " call stack:" >&2; for ((i=0;i<${#FUNCNAME[@]};i++)); do echo " #$i ${FUNCNAME[$i]:-main} (${BASH_SOURCE[$i]}:${BASH_LINENO[$i]})" >&2; done' ERR
|
||||||
|
|
||||||
|
# Ctrl+C / SIGTERM: kill background children (xcodebuild etc.) cleanly
|
||||||
|
cleanup_children() {
|
||||||
|
local jobs_pids
|
||||||
|
jobs_pids=$(jobs -p 2>/dev/null || true)
|
||||||
|
if [[ -n "$jobs_pids" ]]; then
|
||||||
|
echo "" >&2
|
||||||
|
echo "⚠ Abbruch — beende laufende Build-Prozesse..." >&2
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
kill $jobs_pids 2>/dev/null || true
|
||||||
|
sleep 0.5
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
kill -9 $jobs_pids 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
exit 130
|
||||||
|
}
|
||||||
|
trap cleanup_children INT TERM
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
APP_CONFIG="$SCRIPT_DIR/app.config.ts"
|
APP_CONFIG="$SCRIPT_DIR/app.config.ts"
|
||||||
PACKAGE_JSON="$SCRIPT_DIR/package.json"
|
PACKAGE_JSON="$SCRIPT_DIR/package.json"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user