3737 benchmark :
3838 runs-on : ubuntu-latest
3939 needs : build-and-test
40+ permissions :
41+ contents : write
42+ pull-requests : write
4043 steps :
4144 - uses : actions/checkout@v4
4245
@@ -47,26 +50,38 @@ jobs:
4750
4851 - name : Run Benchmarks
4952 run : |
50- mkdir -p ./BenchmarkArtifacts
53+ # Создаем абсолютный путь для артефактов в корне репозитория
54+ mkdir -p ${{ github.workspace }}/bench-results
5155
5256 if [ "${{ github.event_name }}" == "pull_request" ]; then
53- dotnet run -c Release --project ./src/Hexecs.Benchmarks/ -- --filter '*' --exporters json --join --job LowRuntime --artifacts ./BenchmarkArtifacts
57+ dotnet run -c Release --project ./src/Hexecs.Benchmarks/ -- --filter '*' --exporters json --join --job LowRuntime --artifacts ${{ github.workspace }}/bench-results
5458 else
55- dotnet run -c Release --project ./src/Hexecs.Benchmarks/ -- --filter '*' --exporters json --join --artifacts ./BenchmarkArtifacts
59+ dotnet run -c Release --project ./src/Hexecs.Benchmarks/ -- --filter '*' --exporters json --join --artifacts ${{ github.workspace }}/bench-results
5660 fi
5761
58- - name : List results
59- run : ls -R ./BenchmarkArtifacts
62+ - name : Locate Result File
63+ run : |
64+ # Находим созданный JSON (BenchmarkDotNet может положить его в подпапку results)
65+ echo "Searching for benchmark results in ${{ github.workspace }}/bench-results..."
66+ REPORT_FILE=$(find ${{ github.workspace }}/bench-results -name "*.json" | head -n 1)
67+
68+ if [ -z "$REPORT_FILE" ]; then
69+ echo "Error: No benchmark report found!"
70+ exit 1
71+ fi
72+
73+ echo "Found report: $REPORT_FILE"
74+ # Копируем его в фиксированное место для следующего шага
75+ cp "$REPORT_FILE" ${{ github.workspace }}/final-report.json
6076
6177 - name : Store benchmark result
6278 uses : benchmark-action/github-action-benchmark@v1
6379 with :
6480 tool : ' benchmarkdotnet'
65- # BenchmarkDotNet при --join создает файл с именем '*-report-full.json' или 'BenchmarkRun-report.json'
66- output-file-path : ' ./BenchmarkArtifacts/results/BenchmarkRun-report.json'
81+ output-file-path : ' ./final-report.json'
6782 github-token : ${{ secrets.GITHUB_TOKEN }}
83+ # Пушим графики в gh-pages только при мердже в мастер
6884 auto-push : ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
6985 comment-on-alert : true
7086 fail-on-alert : true
71- # Порог чувствительности: 120% (запас на шум облака)
7287 alert-threshold : " 120%"
0 commit comments