@@ -65,18 +65,20 @@ jobs:
6565 tar -xzf $FILENAME
6666 ls -l
6767
68- - name : Phase 0 - Prepare the benchmarks
68+ # Fine-tuned for stability on GHA.
69+ - name : Phase 0 - Configure the benchmark
6970 working-directory : ./timefold-solver-benchmarks
7071 shell : bash
7172 run : |
72- echo "warmup_iterations=5" > scoredirector-benchmark.properties
73+ echo "forks=15" > scoredirector-benchmark.properties
74+ echo "warmup_iterations=5" >> scoredirector-benchmark.properties
7375 echo "measurement_iterations=10" >> scoredirector-benchmark.properties
7476 echo "score_director_type=cs" >> scoredirector-benchmark.properties
7577 echo "example=${{ matrix.example }}" >> scoredirector-benchmark.properties
7678 cat scoredirector-benchmark.properties
7779 chmod +x run-scoredirector.sh
7880
79- - name : Phase 1 - Compile the benchmarks
81+ - name : Phase 1 - Compile the benchmark
8082 working-directory : ./timefold-solver-benchmarks
8183 shell : bash
8284 run : mvn clean install -B -Dquickly -Dversion.ai.timefold.solver=${{ github.event.inputs.baseline }} -Dversion.tools.provider="${{ github.event.inputs.async_profiler_version }}"
@@ -101,12 +103,23 @@ jobs:
101103 shell : bash
102104 run : mvn -B -Dquickly clean install
103105
104- - name : Phase 2 - Checkout timefold-solver-enterprise
106+ # Clone timefold-solver-enterprise
107+ - name : Phase 2 - Checkout timefold-solver-enterprise (PR) # Checkout the PR branch first, if it exists
108+ id : checkout-solver-enterprise
105109 uses : actions/checkout@v4
110+ continue-on-error : true
106111 with :
107112 repository : TimefoldAI/timefold-solver-enterprise
108113 ref : ${{ github.event.inputs.branch }}
109- token : ${{ secrets.JRELEASER_GITHUB_TOKEN }} # Safe; only used to clone the repo and not stored in the fork.
114+ token : ${{ secrets.BENCHMARK_PUBLISH_TOKEN }}
115+ path : ./timefold-solver-enterprise
116+ - name : Phase 2 - Checkout timefold-solver-enterprise (main) # Checkout the main branch if the PR branch does not exist
117+ if : steps.checkout-solver-enterprise.outcome != 'success'
118+ uses : actions/checkout@v4
119+ with :
120+ repository : TimefoldAI/timefold-solver-enterprise
121+ ref : main
122+ token : ${{ secrets.BENCHMARK_PUBLISH_TOKEN }}
110123 path : ./timefold-solver-enterprise
111124
112125 - name : Phase 2 - Quickly build timefold-solver-enterprise
@@ -119,7 +132,7 @@ jobs:
119132 shell : bash
120133 run : mvn clean install -B -Dquickly -Dversion.tools.provider="${{ github.event.inputs.async_profiler_version }}"
121134
122- - name : Phase 2 - Run the new configuration
135+ - name : Phase 2 - Run the benchmark on the new code
123136 working-directory : ./timefold-solver-benchmarks
124137 env :
125138 RUN_ID : ${{ github.event.inputs.branch }}
@@ -142,7 +155,3 @@ jobs:
142155 output-file-path : ./timefold-solver-benchmarks/results/${{ github.event.inputs.branch }}/results.json
143156 github-token : ${{ secrets.BENCHMARK_PUBLISH_TOKEN }}
144157 auto-push : true
145- alert-threshold : ' 105%'
146- comment-on-alert : true
147- fail-on-alert : true
148- alert-comment-cc-users : ' @triceo'
0 commit comments