#!/bin/bash set -e if [ -z "$GITEA_TOKEN" ]; then echo "GITEA_TOKEN is not set. Skipping PR comment." exit 0 fi if [ -f "$GITHUB_EVENT_PATH" ]; then PR_NUMBER=$(jq -r '.pull_request.number' "$GITHUB_EVENT_PATH") else echo "GITHUB_EVENT_PATH not found. Skipping." exit 0 fi if [ "$PR_NUMBER" == "null" ] || [ -z "$PR_NUMBER" ]; then echo "Not a pull request. Skipping." exit 0 fi REPORT_TYPE=$1 INPUT_FILE=${2:-ci_results.txt} if [ ! -f "$INPUT_FILE" ]; then echo "$INPUT_FILE not found. Nothing to post." exit 0 fi RUN_URL="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" if [[ "$GITHUB_SERVER_URL" == *"github.com"* ]] || [ -z "$GITHUB_SERVER_URL" ]; then GITHUB_SERVER_URL="https://git.quad4.io" RUN_URL="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" fi sed -i 's/\x1b\[[0-9;]*[mK]//g' "$INPUT_FILE" if [ "$REPORT_TYPE" == "bench" ]; then HEADER="### Benchmark Summary (automated report)" RESULTS=$(sed -n '/==================== BENCHMARK SUMMARY ====================/,$p' "$INPUT_FILE" | grep -v "Progress:") else if grep -qiE "FAILED|error|❌|exit status|failure" "$INPUT_FILE"; then HEADER="### ❌ CI Failure: $REPORT_TYPE" if grep -q "short test summary info" "$INPUT_FILE"; then RESULTS=$(sed -n '/=========================== short test summary info ============================/,$p' "$INPUT_FILE") elif grep -qE "Found [0-9]* error" "$INPUT_FILE"; then RESULTS=$(grep -A 20 -B 2 -E "Found [0-9]* error|::error|❌" "$INPUT_FILE") else RESULTS=$(grep -Ci 1 -E "FAILED|::error|❌|exit status|failure" "$INPUT_FILE" | tail -n 40) fi if [ -z "$RESULTS" ]; then RESULTS=$(tail -n 30 "$INPUT_FILE") fi else HEADER="### CI Status Report: $REPORT_TYPE" RESULTS="All checks passed! ✅" fi fi if [ -z "$RESULTS" ]; then RESULTS="No detailed results found in $INPUT_FILE. Check full logs." fi MARKER="" NEW_SECTION=$(cat <