diff --git a/mise-tasks/indri-runner-logs b/mise-tasks/indri-runner-logs new file mode 100755 index 0000000..0240405 --- /dev/null +++ b/mise-tasks/indri-runner-logs @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +#MISE description="Get logs for a workflow run from indri (local runner only)" + +set -euo pipefail + +RUN_ID="${1:-}" + +if [[ -z "$RUN_ID" ]]; then + echo "Usage: mise run indri-runner-logs " + echo "" + echo "Fetches logs for a Forgejo Actions run from indri's local storage." + echo "Only works for runs executed by the indri-host-runner." + echo "" + echo "Recent runs:" + curl -sf "https://forge.tail8d86e.ts.net/api/v1/repos/eblume/blumeops/actions/tasks" | \ + jq -r '.workflow_runs[:10] | .[] | " \(.id)\t\(.status)\t\(.workflow_id)\t\(.display_title | .[0:50])"' + exit 1 +fi + +# Logs are stored as: actions_log////.log.zst +# The hex subdir is the last 2 hex chars of the run_id +ACTIONS_LOG_DIR="/opt/homebrew/var/forgejo/data/actions_log/eblume/blumeops" + +# Find the log file - hex subdir is computed from run_id +HEX_SUBDIR=$(printf '%02x' "$RUN_ID") +LOG_FILE="${ACTIONS_LOG_DIR}/${HEX_SUBDIR}/${RUN_ID}.log.zst" + +# Check if log exists and decompress +if ssh indri "test -f '$LOG_FILE'"; then + ssh indri "zstd -d -c '$LOG_FILE'" +else + echo "Error: Log file not found for run $RUN_ID" + echo "Expected path: $LOG_FILE" + echo "" + echo "Available logs:" + ssh indri "find '$ACTIONS_LOG_DIR' -name '*.log.zst' -exec basename {} .log.zst \; | sort -n | tail -10" + exit 1 +fi