#!/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.ops.eblu.me/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