List more CI runs for pr-test (#18650)
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
name: List Active PR Runs
|
name: List Active Runs
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
@@ -15,13 +15,13 @@ permissions:
|
|||||||
pull-requests: read
|
pull-requests: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
list-active-pr-runs:
|
list-active-runs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install GitHub CLI
|
- name: Install GitHub CLI
|
||||||
run: sudo apt-get install -y gh jq
|
run: sudo apt-get install -y gh jq
|
||||||
|
|
||||||
- name: List active PR runs grouped by PR
|
- name: List active runs grouped by PR
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
REPO: ${{ github.repository }}
|
REPO: ${{ github.repository }}
|
||||||
@@ -31,7 +31,7 @@ jobs:
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
echo "========================================="
|
echo "========================================="
|
||||||
echo "🔍 Active PR Workflow Runs Report"
|
echo "🔍 Active Workflow Runs Report"
|
||||||
echo "========================================="
|
echo "========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ jobs:
|
|||||||
--workflow "$workflow_file" \
|
--workflow "$workflow_file" \
|
||||||
--json databaseId,status,event,headBranch,createdAt,updatedAt,headSha,number,attempt \
|
--json databaseId,status,event,headBranch,createdAt,updatedAt,headSha,number,attempt \
|
||||||
--limit 500 \
|
--limit 500 \
|
||||||
| jq -c '.[] | select(.status=="queued" or .status=="waiting" or .status=="in_progress") | select(.event=="pull_request")')
|
| jq -c '.[] | select(.status=="queued" or .status=="waiting" or .status=="in_progress")')
|
||||||
|
|
||||||
if [ -z "$active_runs" ]; then
|
if [ -z "$active_runs" ]; then
|
||||||
continue
|
continue
|
||||||
@@ -64,6 +64,7 @@ jobs:
|
|||||||
echo "$active_runs" | while read -r run; do
|
echo "$active_runs" | while read -r run; do
|
||||||
run_id=$(echo "$run" | jq -r '.databaseId')
|
run_id=$(echo "$run" | jq -r '.databaseId')
|
||||||
run_status=$(echo "$run" | jq -r '.status')
|
run_status=$(echo "$run" | jq -r '.status')
|
||||||
|
run_event=$(echo "$run" | jq -r '.event')
|
||||||
created_at=$(echo "$run" | jq -r '.createdAt')
|
created_at=$(echo "$run" | jq -r '.createdAt')
|
||||||
head_sha=$(echo "$run" | jq -r '.headSha')
|
head_sha=$(echo "$run" | jq -r '.headSha')
|
||||||
run_number=$(echo "$run" | jq -r '.number')
|
run_number=$(echo "$run" | jq -r '.number')
|
||||||
@@ -83,12 +84,12 @@ jobs:
|
|||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Find PR number
|
# Find PR number (may be empty for non-PR runs)
|
||||||
pr_number=$(gh api "repos/$REPO/pulls?state=open&head=${head_owner}:${head_branch}" \
|
pr_number=$(gh api "repos/$REPO/pulls?state=open&head=${head_owner}:${head_branch}" \
|
||||||
--jq '.[0].number // empty' 2>/dev/null || true)
|
--jq '.[0].number // empty' 2>/dev/null || true)
|
||||||
|
|
||||||
if [ -z "$pr_number" ]; then
|
if [ -z "$pr_number" ]; then
|
||||||
continue
|
pr_number="NO_PR"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Get jobs for this run (with pagination to avoid missing jobs)
|
# Get jobs for this run (with pagination to avoid missing jobs)
|
||||||
@@ -106,25 +107,25 @@ jobs:
|
|||||||
queue_time=$((current_time - created_time))
|
queue_time=$((current_time - created_time))
|
||||||
queue_minutes=$((queue_time / 60))
|
queue_minutes=$((queue_time / 60))
|
||||||
|
|
||||||
# Store data in temporary file
|
# Store data in temporary file (unified format with event and branch)
|
||||||
echo "$pr_number|$workflow_file|$run_id|$run_status|$running_jobs|$queued_jobs|$runners|$queue_minutes|$created_at|$head_sha|$run_attempt" >> "$pr_data_file"
|
echo "$pr_number|$workflow_file|$run_id|$run_status|$running_jobs|$queued_jobs|$runners|$queue_minutes|$created_at|$head_sha|$run_attempt|$run_event|$head_branch" >> "$pr_data_file"
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "========================================="
|
echo "========================================="
|
||||||
echo "📊 Active PRs Summary"
|
echo "📊 Active Runs Summary"
|
||||||
echo "========================================="
|
echo "========================================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
if [ ! -s "$pr_data_file" ]; then
|
if [ ! -s "$pr_data_file" ]; then
|
||||||
echo "✅ No active PR runs found"
|
echo "✅ No active runs found"
|
||||||
rm -f "$pr_data_file"
|
rm -f "$pr_data_file"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Get unique PR numbers
|
# Get unique PR numbers (exclude NO_PR entries)
|
||||||
pr_numbers=$(cat "$pr_data_file" | cut -d'|' -f1 | sort -u)
|
pr_numbers=$(cut -d'|' -f1 < "$pr_data_file" | grep -v '^NO_PR$' | sort -u || true)
|
||||||
|
|
||||||
# Separate high priority and normal PRs
|
# Separate high priority and normal PRs
|
||||||
high_priority_prs=()
|
high_priority_prs=()
|
||||||
@@ -240,11 +241,74 @@ jobs:
|
|||||||
echo ""
|
echo ""
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# --- Non-PR Runs Section ---
|
||||||
|
non_pr_runs=$(grep '^NO_PR|' "$pr_data_file" 2>/dev/null || true)
|
||||||
|
non_pr_running=0
|
||||||
|
non_pr_queued=0
|
||||||
|
|
||||||
|
if [ -n "$non_pr_runs" ]; then
|
||||||
|
echo "========================================="
|
||||||
|
echo "📦 Non-PR Runs (manual / scheduled / other)"
|
||||||
|
echo "========================================="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "$non_pr_runs" | while read -r line; do
|
||||||
|
workflow=$(echo "$line" | cut -d'|' -f2)
|
||||||
|
run_id=$(echo "$line" | cut -d'|' -f3)
|
||||||
|
status=$(echo "$line" | cut -d'|' -f4)
|
||||||
|
running=$(echo "$line" | cut -d'|' -f5)
|
||||||
|
queued=$(echo "$line" | cut -d'|' -f6)
|
||||||
|
runners=$(echo "$line" | cut -d'|' -f7)
|
||||||
|
queue_min=$(echo "$line" | cut -d'|' -f8)
|
||||||
|
created=$(echo "$line" | cut -d'|' -f9)
|
||||||
|
attempt=$(echo "$line" | cut -d'|' -f11)
|
||||||
|
event=$(echo "$line" | cut -d'|' -f12)
|
||||||
|
branch=$(echo "$line" | cut -d'|' -f13)
|
||||||
|
|
||||||
|
run_url="https://github.com/$REPO/actions/runs/$run_id"
|
||||||
|
|
||||||
|
retry_count=$((attempt - 1))
|
||||||
|
retry_indicator=""
|
||||||
|
if [ "$retry_count" -gt 0 ]; then
|
||||||
|
retry_indicator=" 🔄 Retry #$retry_count"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " 📦 Workflow: $workflow (Run #$run_id)$retry_indicator"
|
||||||
|
echo " Event: $event"
|
||||||
|
echo " Branch: $branch"
|
||||||
|
echo " Status: $status"
|
||||||
|
echo " 🟢 Running jobs: $running"
|
||||||
|
echo " 🟡 Queued jobs: $queued"
|
||||||
|
|
||||||
|
if [ "$running" -gt 0 ] && [ "$runners" != "" ]; then
|
||||||
|
echo " 🖥️ Runners: $runners"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$queue_min" -gt 0 ]; then
|
||||||
|
echo " ⏱️ Queue time: ${queue_min} minutes"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " 🔗 Run URL: $run_url"
|
||||||
|
echo ""
|
||||||
|
done
|
||||||
|
|
||||||
|
non_pr_running=$(echo "$non_pr_runs" | cut -d'|' -f5 | awk '{sum+=$1} END {print sum+0}')
|
||||||
|
non_pr_queued=$(echo "$non_pr_runs" | cut -d'|' -f6 | awk '{sum+=$1} END {print sum+0}')
|
||||||
|
non_pr_count=$(echo "$non_pr_runs" | wc -l | tr -d ' ')
|
||||||
|
|
||||||
|
total_running=$((total_running + non_pr_running))
|
||||||
|
total_queued=$((total_queued + non_pr_queued))
|
||||||
|
|
||||||
|
echo " 📊 Non-PR Total: $non_pr_running running, $non_pr_queued queued"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
# Overall summary
|
# Overall summary
|
||||||
echo "========================================="
|
echo "========================================="
|
||||||
echo "📈 Overall Summary"
|
echo "📈 Overall Summary"
|
||||||
echo "========================================="
|
echo "========================================="
|
||||||
echo "Total PRs with active runs: $pr_count"
|
echo "Total PRs with active runs: $pr_count"
|
||||||
|
echo "Total non-PR active runs: ${non_pr_count:-0}"
|
||||||
echo "Total running jobs: $total_running"
|
echo "Total running jobs: $total_running"
|
||||||
echo "Total queued jobs: $total_queued"
|
echo "Total queued jobs: $total_queued"
|
||||||
echo "========================================="
|
echo "========================================="
|
||||||
|
|||||||
Reference in New Issue
Block a user