fix: enhance phase3_teardown.sh with error handling for runner removal
This commit is contained in:
@@ -24,6 +24,11 @@ if [[ ! -f "$RUNNERS_CONF" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Track whether teardown encountered operational errors (not user skips).
|
||||
TEARDOWN_FAILED=false
|
||||
REMOVED=0
|
||||
FAILED=0
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Step 1: Remove each runner via manage_runner.sh
|
||||
# manage_runner.sh handles its own safety (skips already-removed runners).
|
||||
@@ -34,21 +39,36 @@ if [[ "$confirm" =~ ^[Yy]$ ]]; then
|
||||
while IFS= read -r name; do
|
||||
[[ -z "$name" ]] && continue
|
||||
log_info "Removing runner: ${name}"
|
||||
"${SCRIPT_DIR}/manage_runner.sh" remove --name "$name" || true
|
||||
if "${SCRIPT_DIR}/manage_runner.sh" remove --name "$name"; then
|
||||
REMOVED=$((REMOVED + 1))
|
||||
else
|
||||
log_error "Failed to remove runner: ${name}"
|
||||
FAILED=$((FAILED + 1))
|
||||
TEARDOWN_FAILED=true
|
||||
fi
|
||||
done < <(ini_list_sections "$RUNNERS_CONF")
|
||||
log_success "All runners removed"
|
||||
|
||||
TOTAL=$((REMOVED + FAILED))
|
||||
log_info "Results: ${REMOVED} removed, ${FAILED} failed (out of ${TOTAL})"
|
||||
else
|
||||
log_info "Skipped runner removal"
|
||||
fi
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Step 2: Clear the registration token from .env
|
||||
# The token is single-use in some Gitea configurations — generating a new one
|
||||
# on next deploy is safer than reusing a potentially stale token.
|
||||
# Only clear if no runners failed — a partial teardown should preserve the
|
||||
# token so the user can retry without needing to regenerate it.
|
||||
# ---------------------------------------------------------------------------
|
||||
if [[ -n "${GITEA_RUNNER_REGISTRATION_TOKEN:-}" ]]; then
|
||||
if $TEARDOWN_FAILED; then
|
||||
log_info "Keeping GITEA_RUNNER_REGISTRATION_TOKEN in .env because some runners failed to remove"
|
||||
elif [[ -n "${GITEA_RUNNER_REGISTRATION_TOKEN:-}" ]]; then
|
||||
save_env_var "GITEA_RUNNER_REGISTRATION_TOKEN" ""
|
||||
log_success "GITEA_RUNNER_REGISTRATION_TOKEN cleared from .env"
|
||||
fi
|
||||
|
||||
if $TEARDOWN_FAILED; then
|
||||
log_error "Phase 3 teardown completed with errors"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_success "Phase 3 teardown complete"
|
||||
|
||||
Reference in New Issue
Block a user