diff --git a/scripts/post_ci_results.sh b/scripts/post_ci_results.sh index 00d127f..3b4e75e 100755 --- a/scripts/post_ci_results.sh +++ b/scripts/post_ci_results.sh @@ -1,19 +1,11 @@ #!/bin/bash set -e -# Required environment variables: -# GITEA_TOKEN -# GITHUB_REPOSITORY -# GITHUB_EVENT_PATH -# GITHUB_SERVER_URL -# GITHUB_RUN_ID - if [ -z "$GITEA_TOKEN" ]; then echo "GITEA_TOKEN is not set. Skipping PR comment." exit 0 fi -# Extract PR number from the event JSON if [ -f "$GITHUB_EVENT_PATH" ]; then PR_NUMBER=$(jq -r '.pull_request.number' "$GITHUB_EVENT_PATH") else @@ -36,54 +28,103 @@ fi RUN_URL="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" -# Clean up ANSI escape sequences (colors) from the output -# This makes the markdown output readable +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)" - # Extract from summary start to the end, removing progress lines - # We look for the start of the benchmark summary table RESULTS=$(sed -n '/==================== BENCHMARK SUMMARY ====================/,$p' "$INPUT_FILE" | grep -v "Progress:") else - HEADER="### CI Status Report: $REPORT_TYPE" - # Check for failures if grep -qiE "FAILED|error|❌|exit status|failure" "$INPUT_FILE"; then - # Try to find a meaningful summary + 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 -q "Found [0-9]* error" "$INPUT_FILE"; then - # Ruff/Lint style errors + 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 - # Extract lines that look like errors, with some context, limited to avoid too long comments RESULTS=$(grep -Ci 1 -E "FAILED|::error|❌|exit status|failure" "$INPUT_FILE" | tail -n 40) fi - HEADER="### ❌ CI Failure: $REPORT_TYPE" + 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" + RESULTS="No detailed results found in $INPUT_FILE. Check full logs." fi -# Construct the message -# Note: Gitea/GitHub PR reviews use a JSON body where \n is a literal newline -BODY="${HEADER}\n\n" -BODY="${BODY}\`\`\`text\n${RESULTS}\n\`\`\`\n\n" -BODY="${BODY}🔗 [View Full Run](${RUN_URL})" +MARKER="" -# Use jq to construct the JSON payload safely -JSON_PAYLOAD=$(jq -n \ - --arg body "$BODY" \ - '{body: $body, event: "COMMENT"}') +NEW_SECTION=$(cat <