|
| 1 | +name: macOS Troubleshooting |
| 2 | + |
| 3 | +on: [workflow_dispatch] |
| 4 | + |
| 5 | +jobs: |
| 6 | + troubleshoot: |
| 7 | + runs-on: macos-15-xlarge |
| 8 | + strategy: |
| 9 | + matrix: |
| 10 | + test_command: |
| 11 | + - "sysbench cpu run --cpu-max-prime=1000000 --threads=1 --events=1000000000" |
| 12 | + - "sysbench cpu run --cpu-max-prime=10000000 --threads=$(sysctl -n hw.ncpu) --events=1000000000" |
| 13 | + - "sysbench memory run --memory-block-size=1M --memory-total-size=20000G --threads=1" |
| 14 | + - "sysbench memory run --memory-block-size=1M --memory-total-size=60000G --threads=$(sysctl -n hw.ncpu)" |
| 15 | + - "fio --name=write_test --rw=write --bs=4k --size=700M --numjobs=$(sysctl -n hw.ncpu)" |
| 16 | + - "fio --name=read_test --rw=read --bs=4k --size=2G --numjobs=$(sysctl -n hw.ncpu)" |
| 17 | + steps: |
| 18 | + |
| 19 | +# - name: Checkout repository |
| 20 | +# uses: actions/checkout@v4 |
| 21 | + |
| 22 | + - name: Pre-check system state |
| 23 | + run: | |
| 24 | + echo "============ Initial System State ============" |
| 25 | + echo "========= Running Processes =========" |
| 26 | + ps aux |
| 27 | + echo "========= Disk Usage =========" |
| 28 | + df -h |
| 29 | + echo "========= Memory Usage =========" |
| 30 | + vm_stat |
| 31 | + echo "========= System Load =========" |
| 32 | + uptime |
| 33 | +
|
| 34 | + - name: Run test command multiple times |
| 35 | + run: | |
| 36 | + brew install sysbench fio |
| 37 | + for i in {1..10}; do |
| 38 | + echo "Iteration $i: Running command: ${{ matrix.test_command }}" |
| 39 | + eval "${{ matrix.test_command }}" |
| 40 | + done |
| 41 | +
|
| 42 | + - name: Collect system logs |
| 43 | + if: always() |
| 44 | + run: | |
| 45 | + mkdir -p logs |
| 46 | + echo "========= System Information =========" > logs/system_info.txt |
| 47 | + system_profiler SPSoftwareDataType >> logs/system_info.txt |
| 48 | + |
| 49 | + echo "========= Disk Usage =========" >> logs/system_info.txt |
| 50 | + df -h >> logs/system_info.txt |
| 51 | + |
| 52 | + echo "========= Memory Usage =========" >> logs/system_info.txt |
| 53 | + vm_stat >> logs/system_info.txt |
| 54 | + |
| 55 | + echo "========= System Load =========" >> logs/system_info.txt |
| 56 | + uptime >> logs/system_info.txt |
| 57 | + |
| 58 | + echo "========= Running Processes =========" >> logs/system_info.txt |
| 59 | + ps aux >> logs/system_info.txt |
| 60 | + |
| 61 | + echo "========= GitHub Actions Runner Logs =========" > logs/runner_logs.txt |
| 62 | + cat /Users/runner/Library/Logs/github-actions/* >> logs/runner_logs.txt 2>/dev/null || echo "No runner logs found" |
| 63 | +
|
| 64 | + echo "========= System Logs =========" > logs/system_logs.txt |
| 65 | + log show --last 30m > logs/system_logs.txt || echo "Failed to collect system logs" |
| 66 | +
|
| 67 | + - name: Upload logs |
| 68 | + if: always() |
| 69 | + uses: actions/upload-artifact@v4 |
| 70 | + with: |
| 71 | + name: macos-troubleshooting-logs-${{ matrix.test_command }} |
| 72 | + path: logs/ |
0 commit comments