nigig-org/crates/apps/nigig-site/tools/ci-cargo.sh
Arena Agent f49d8b16ac
Some checks failed
nigig-site / Owned paths and honest test contracts (push) Has been cancelled
nigig-site / Cargo check-all-targets (push) Has been cancelled
nigig-site / Cargo clippy-site-owned (push) Has been cancelled
nigig-site / Cargo integration-non-live (push) Has been cancelled
nigig-site / Cargo media-export-baseline (push) Has been cancelled
nigig-site / Cargo storage-crypto-baseline (push) Has been cancelled
nigig-site / Cargo unit (push) Has been cancelled
nigig-site / Runtime UI (explicitly skipped until enabled) (push) Has been cancelled
nigig-site / Migration and recovery (explicitly skipped until enabled) (push) Has been cancelled
nigig-site / Media limits (explicitly skipped until enabled) (push) Has been cancelled
nigig-site / Real server interoperability (explicitly skipped until enabled) (push) Has been cancelled
nigig-site / Security and supply-chain baseline (push) Has been cancelled
nigig-site / Release capability gate (push) Has been cancelled
repo hygiene / hygiene (push) Has been cancelled
ci(nigig-site): establish truthful SITE-00 gates
2026-09-12 09:08:22 +00:00

67 lines
1.9 KiB
Bash
Executable file

#!/usr/bin/env bash
# Run one Site CI command with a hard timeout and durable diagnostic output.
# Cargo failures, SIGKILL/OOM, and timeout remain failures; this wrapper never
# turns a missing result into a green job.
set -euo pipefail
usage() {
echo "usage: $0 <artifact-name> <command> [args ...]" >&2
exit 64
}
[[ $# -ge 2 ]] || usage
name=$1
shift
[[ $name =~ ^[A-Za-z0-9._-]+$ ]] || {
echo "invalid artifact name: $name" >&2
exit 64
}
log_dir=${NIGIG_SITE_CI_LOG_DIR:-/tmp/nigig-site-ci}
timeout_seconds=${NIGIG_SITE_CI_TIMEOUT_SECONDS:-3300}
[[ $timeout_seconds =~ ^[1-9][0-9]*$ ]] || {
echo "NIGIG_SITE_CI_TIMEOUT_SECONDS must be a positive integer" >&2
exit 64
}
mkdir -p "$log_dir"
log_file="$log_dir/$name.log"
rss_file="$log_dir/$name.rss.txt"
result_file="$log_dir/$name.result.txt"
: >"$log_file"
: >"$rss_file"
printf 'command:' >"$result_file"
printf ' %q' "$@" >>"$result_file"
printf '\nstarted_utc=%s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" >>"$result_file"
set +e
if [[ -x /usr/bin/time ]]; then
/usr/bin/time -v -o "$rss_file" \
timeout --signal=TERM --kill-after=30 "$timeout_seconds" "$@" \
>"$log_file" 2>&1
status=$?
else
echo "warning: /usr/bin/time unavailable; peak RSS not captured" >"$rss_file"
timeout --signal=TERM --kill-after=30 "$timeout_seconds" "$@" \
>"$log_file" 2>&1
status=$?
fi
set -e
printf 'finished_utc=%s\nexit_status=%s\n' \
"$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$status" >>"$result_file"
cat "$log_file"
echo "--- resource report: $name ---"
cat "$rss_file"
echo "--- command result: $name ---"
cat "$result_file"
if [[ $status -eq 124 || $status -eq 137 ]]; then
echo "ERROR: $name exceeded its timeout/resource envelope (exit $status)." >&2
elif grep -Eiq 'signal: 9|SIGKILL|out of memory|Cannot allocate memory' "$log_file"; then
echo "ERROR: $name was killed by an infrastructure/resource failure." >&2
fi
exit "$status"