|
20 | 20 | type: string |
21 | 21 |
|
22 | 22 | jobs: |
23 | | - # AMD Runner status report |
24 | | - runner-status: |
25 | | - name: Report - AMD CI Runners |
26 | | - if: ${{ !inputs.job_filter }} |
27 | | - runs-on: ubuntu-latest |
28 | | - env: |
29 | | - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
30 | | - steps: |
31 | | - - name: Query AMD Runner Status |
32 | | - run: | |
33 | | - echo "# AMD CI Runner Status Report" >> $GITHUB_STEP_SUMMARY |
34 | | - echo "" >> $GITHUB_STEP_SUMMARY |
35 | | - echo "**Generated:** $(date -u '+%Y-%m-%d %H:%M:%S') UTC" >> $GITHUB_STEP_SUMMARY |
36 | | - echo "" >> $GITHUB_STEP_SUMMARY |
37 | | -
|
38 | | - # Try to get runners (requires admin access) |
39 | | - RUNNERS=$(gh api repos/${{ github.repository }}/actions/runners --jq '.runners[] | select(.labels[].name | test("amd|mi3"; "i"))' 2>/dev/null) || { |
40 | | - echo "> **Note:** Cannot access runners API (requires admin permission). Showing runner info from recent jobs instead." >> $GITHUB_STEP_SUMMARY |
41 | | - echo "" >> $GITHUB_STEP_SUMMARY |
42 | | -
|
43 | | - # Fallback: Get runner info from recent jobs |
44 | | - echo "## Runners Observed in Recent Jobs (Last 6 hours)" >> $GITHUB_STEP_SUMMARY |
45 | | - echo "" >> $GITHUB_STEP_SUMMARY |
46 | | - echo "| Runner Name | Last Job | Status | Started |" >> $GITHUB_STEP_SUMMARY |
47 | | - echo "|-------------|----------|--------|---------|" >> $GITHUB_STEP_SUMMARY |
48 | | -
|
49 | | - gh api "repos/${{ github.repository }}/actions/runs?status=in_progress&per_page=50" --jq '.workflow_runs[] | select(.name | test("AMD"; "i")) | .id' | while read run_id; do |
50 | | - gh api "repos/${{ github.repository }}/actions/runs/$run_id/jobs" --jq '.jobs[] | select(.runner_name != null) | select(.runner_name | test("mi3"; "i")) | "| \(.runner_name) | \(.name | .[0:50]) | \(.status) | \(.started_at | .[0:16]) |"' 2>/dev/null |
51 | | - done | sort -u >> $GITHUB_STEP_SUMMARY |
52 | | -
|
53 | | - exit 0 |
54 | | - } |
55 | | -
|
56 | | - # If we have admin access, show full runner status |
57 | | - echo "## Runner Status" >> $GITHUB_STEP_SUMMARY |
58 | | - echo "" >> $GITHUB_STEP_SUMMARY |
59 | | - echo "| Runner Name | Status | Busy | Labels |" >> $GITHUB_STEP_SUMMARY |
60 | | - echo "|-------------|--------|------|--------|" >> $GITHUB_STEP_SUMMARY |
61 | | -
|
62 | | - gh api repos/${{ github.repository }}/actions/runners --paginate --jq ' |
63 | | - .runners[] | |
64 | | - select(.labels[].name | test("amd|mi3"; "i")) | |
65 | | - "| \(.name) | \(.status) | \(.busy) | \([.labels[].name] | join(", ")) |" |
66 | | - ' >> $GITHUB_STEP_SUMMARY |
67 | | -
|
68 | | - echo "" >> $GITHUB_STEP_SUMMARY |
69 | | -
|
70 | | - # Summary counts |
71 | | - echo "## Summary" >> $GITHUB_STEP_SUMMARY |
72 | | - echo "" >> $GITHUB_STEP_SUMMARY |
73 | | -
|
74 | | - ONLINE=$(gh api repos/${{ github.repository }}/actions/runners --paginate --jq '[.runners[] | select(.labels[].name | test("amd|mi3"; "i")) | select(.status == "online")] | length') |
75 | | - BUSY=$(gh api repos/${{ github.repository }}/actions/runners --paginate --jq '[.runners[] | select(.labels[].name | test("amd|mi3"; "i")) | select(.busy == true)] | length') |
76 | | - IDLE=$((ONLINE - BUSY)) |
77 | | -
|
78 | | - echo "| Metric | Count |" >> $GITHUB_STEP_SUMMARY |
79 | | - echo "|--------|-------|" >> $GITHUB_STEP_SUMMARY |
80 | | - echo "| Online | $ONLINE |" >> $GITHUB_STEP_SUMMARY |
81 | | - echo "| Busy | $BUSY |" >> $GITHUB_STEP_SUMMARY |
82 | | - echo "| Idle | $IDLE |" >> $GITHUB_STEP_SUMMARY |
83 | | -
|
84 | 23 | # Single job filter mode |
85 | 24 | custom-report: |
86 | 25 | name: Custom Job Report |
|
0 commit comments