fix: [nomad-step-5] S5.4 — dispatcher.sh nomad exit code extraction (dead != failure) (#991)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful

This commit is contained in:
Agent 2026-04-18 07:41:05 +00:00
parent 9f94b818a3
commit 9806ed40df

View file

@ -683,10 +683,10 @@ _launch_runner_nomad() {
# Get allocation logs # Get allocation logs
logs=$(nomad alloc logs -short "$alloc_id" 2>/dev/null || true) logs=$(nomad alloc logs -short "$alloc_id" 2>/dev/null || true)
# Try to get exit code from JSON output # Try to get exit code from alloc status JSON
# Nomad alloc status -json has .TaskStates["<task_name>].Events[].ExitCode # Nomad alloc status -json has .TaskStates["<task_name>"].Events[].ExitCode
local alloc_exit_code local alloc_exit_code
alloc_exit_code=$(echo "$final_status_json" | jq -r '.TaskStates["runner"].Events[-1].ExitCode // empty' 2>/dev/null) || alloc_exit_code="" alloc_exit_code=$(nomad alloc status -json "$alloc_id" 2>/dev/null | jq -r '.TaskStates["runner"].Events[-1].ExitCode // empty' 2>/dev/null) || alloc_exit_code=""
if [ -n "$alloc_exit_code" ] && [ "$alloc_exit_code" != "null" ]; then if [ -n "$alloc_exit_code" ] && [ "$alloc_exit_code" != "null" ]; then
exit_code="$alloc_exit_code" exit_code="$alloc_exit_code"
@ -694,12 +694,14 @@ _launch_runner_nomad() {
fi fi
# If we couldn't get exit code from alloc, check job state as fallback # If we couldn't get exit code from alloc, check job state as fallback
# Note: "dead" = terminal state for batch jobs (includes successful completion)
# Only "failed" indicates actual failure
if [ "$exit_code" -eq 0 ]; then if [ "$exit_code" -eq 0 ]; then
local final_state local final_state
final_state=$(echo "$final_status_json" | jq -r '.Status // empty' 2>/dev/null) || final_state="" final_state=$(echo "$final_status_json" | jq -r '.Status // empty' 2>/dev/null) || final_state=""
case "$final_state" in case "$final_state" in
failed|dead) failed)
exit_code=1 exit_code=1
;; ;;
esac esac