|
57 | 57 | continue-on-error: true |
58 | 58 | run: | |
59 | 59 | echo $(date) >> $GITHUB_STEP_SUMMARY |
60 | | - swift package ${BENCHMARK_PACKAGE_PATH} benchmark baseline check main pull_request --format markdown >> $GITHUB_STEP_SUMMARY |
61 | | - echo "exitStatus=$?" >> $GITHUB_ENV |
| 60 | + swift package ${BENCHMARK_PACKAGE_PATH} benchmark baseline check main pull_request --format markdown >> $GITHUB_STEP_SUMMARY 2>benchmark_stderr |
| 61 | + rawExitStatus=$? |
| 62 | + cat benchmark_stderr >&2 |
| 63 | + # SwiftPM maps all non-zero plugin exit codes to 1, so parse stderr to recover the real status |
| 64 | + if [ "$rawExitStatus" -eq 0 ]; then |
| 65 | + echo "exitStatus=0" >> $GITHUB_ENV |
| 66 | + elif grep -q "benchmarkThresholdImprovement" benchmark_stderr; then |
| 67 | + echo "exitStatus=4" >> $GITHUB_ENV |
| 68 | + elif grep -q "benchmarkThresholdRegression" benchmark_stderr; then |
| 69 | + echo "exitStatus=2" >> $GITHUB_ENV |
| 70 | + elif grep -q "benchmarkCrashed" benchmark_stderr; then |
| 71 | + echo "exitStatus=3" >> $GITHUB_ENV |
| 72 | + elif grep -q "baselineNotFound" benchmark_stderr; then |
| 73 | + echo "exitStatus=5" >> $GITHUB_ENV |
| 74 | + else |
| 75 | + echo "exitStatus=$rawExitStatus" >> $GITHUB_ENV |
| 76 | + fi |
62 | 77 | - if: ${{ env.exitStatus == '0' }} |
63 | 78 | name: Pull request comment text same |
64 | 79 | run: | |
|
98 | 113 | if: ${{ success() || failure() }} |
99 | 114 | run: | |
100 | 115 | #/usr/bin/ordo-performance powersave |
101 | | - exit ${{ env.exitStatus }} |
| 116 | + # Treat improvement (4) and same-as-baseline (0) as success |
| 117 | + if [ "${{ env.exitStatus }}" = "0" ] || [ "${{ env.exitStatus }}" = "4" ]; then |
| 118 | + exit 0 |
| 119 | + else |
| 120 | + exit ${{ env.exitStatus }} |
| 121 | + fi |
0 commit comments