From 982517c68dc17177af122e5a5ac2657fd3640927 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Petrovick=C3=BD?= Date: Sat, 6 Jun 2026 09:55:23 +0200 Subject: [PATCH 1/4] Fix repo --- .github/workflows/performance_quickstarts.yml | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/performance_quickstarts.yml b/.github/workflows/performance_quickstarts.yml index 8bf5a75..8c2a3a9 100644 --- a/.github/workflows/performance_quickstarts.yml +++ b/.github/workflows/performance_quickstarts.yml @@ -59,11 +59,11 @@ jobs: # When updating this list, use find-and-replace in the entire file to keep all such lists identical. example: [bed-allocation, conference-scheduling, employee-scheduling, facility-location, flight-crew-scheduling, food-packaging, maintenance-scheduling, meeting-scheduling, order-picking, project-job-scheduling, school-timetabling, sports-league-scheduling, task-assigning, tournament-scheduling, vehicle-routing] steps: - - name: Checkout timefold-solver-quickstarts + - name: Checkout timefold-quickstarts uses: actions/checkout@v4 with: - repository: TimefoldAI/timefold-solver-quickstarts - path: ./timefold-solver-quickstarts + repository: TimefoldAI/timefold-quickstarts + path: ./timefold-quickstarts ref: main - name: Setup JDK and Maven @@ -86,7 +86,7 @@ jobs: run: ./mvnw -B -Dquickly clean install - name: Switch quickstarts to baseline branch if it exists - working-directory: ./timefold-solver-quickstarts + working-directory: ./timefold-quickstarts shell: bash env: TARGET_BRANCH: ${{ github.event.inputs.baseline }} @@ -101,14 +101,14 @@ jobs: shell: bash run: | mvn -B -DskipTests package \ - -f timefold-solver-quickstarts/java/${{ matrix.example }}/pom.xml + -f timefold-quickstarts/java/${{ matrix.example }}/pom.xml - name: Upload the binaries uses: actions/upload-artifact@v4 with: name: baseline-${{ matrix.example }} path: | - ./timefold-solver-quickstarts/java/${{ matrix.example }}/target/quarkus-app/ + ./timefold-quickstarts/java/${{ matrix.example }}/target/quarkus-app/ if-no-files-found: error build_sut: @@ -119,11 +119,11 @@ jobs: # When updating this list, use find-and-replace in the entire file to keep all such lists identical. example: [bed-allocation, conference-scheduling, employee-scheduling, facility-location, flight-crew-scheduling, food-packaging, maintenance-scheduling, meeting-scheduling, order-picking, project-job-scheduling, school-timetabling, sports-league-scheduling, task-assigning, tournament-scheduling, vehicle-routing] steps: - - name: Checkout timefold-solver-quickstarts + - name: Checkout timefold-quickstarts uses: actions/checkout@v4 with: - repository: TimefoldAI/timefold-solver-quickstarts - path: ./timefold-solver-quickstarts + repository: TimefoldAI/timefold-quickstarts + path: ./timefold-quickstarts ref: main - name: Setup JDK and Maven @@ -146,7 +146,7 @@ jobs: run: ./mvnw -B -Dquickly clean install - name: Switch quickstarts to branch under test if it exists - working-directory: ./timefold-solver-quickstarts + working-directory: ./timefold-quickstarts shell: bash env: TARGET_BRANCH: ${{ github.event.inputs.branch }} @@ -161,14 +161,14 @@ jobs: shell: bash run: | mvn -B -DskipTests package \ - -f timefold-solver-quickstarts/java/${{ matrix.example }}/pom.xml + -f timefold-quickstarts/java/${{ matrix.example }}/pom.xml - name: Upload the binaries uses: actions/upload-artifact@v4 with: name: sut-${{ matrix.example }} path: | - ./timefold-solver-quickstarts/java/${{ matrix.example }}/target/quarkus-app/ + ./timefold-quickstarts/java/${{ matrix.example }}/target/quarkus-app/ if-no-files-found: error benchmark: From abc9cd62fcac9360003d6e2c3916ad6303faacd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Petrovick=C3=BD?= Date: Sat, 6 Jun 2026 09:59:51 +0200 Subject: [PATCH 2/4] Fix branch --- .github/workflows/performance_quickstarts.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/performance_quickstarts.yml b/.github/workflows/performance_quickstarts.yml index 8c2a3a9..482b70a 100644 --- a/.github/workflows/performance_quickstarts.yml +++ b/.github/workflows/performance_quickstarts.yml @@ -64,7 +64,7 @@ jobs: with: repository: TimefoldAI/timefold-quickstarts path: ./timefold-quickstarts - ref: main + ref: development - name: Setup JDK and Maven uses: actions/setup-java@v5 @@ -124,7 +124,7 @@ jobs: with: repository: TimefoldAI/timefold-quickstarts path: ./timefold-quickstarts - ref: main + ref: development - name: Setup JDK and Maven uses: actions/setup-java@v5 From 99d270e6f8af7d2932352dcf0b91c1256f0007c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Petrovick=C3=BD?= Date: Sat, 6 Jun 2026 10:25:44 +0200 Subject: [PATCH 3/4] Include the script in nightly runs --- ...erformance_score_director.yml => nightly_performance.yml} | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) rename .github/workflows/{nightly_performance_score_director.yml => nightly_performance.yml} (80%) diff --git a/.github/workflows/nightly_performance_score_director.yml b/.github/workflows/nightly_performance.yml similarity index 80% rename from .github/workflows/nightly_performance_score_director.yml rename to .github/workflows/nightly_performance.yml index 08f59d7..ef0a9c5 100644 --- a/.github/workflows/nightly_performance_score_director.yml +++ b/.github/workflows/nightly_performance.yml @@ -27,7 +27,10 @@ jobs: if git log --since="24 hours ago" --oneline | grep -q .; then cd ../timefold-solver-benchmarks echo '{}' | gh workflow run performance_score_director.yml --json - echo "Launched nightly perf tests." >> $GITHUB_STEP_SUMMARY + echo "Launched nightly score director perf tests." >> $GITHUB_STEP_SUMMARY + sleep 1m + echo '{}' | gh workflow run performance_quickstarts.yml --json + echo "Queued nightly quickstart perf tests." >> $GITHUB_STEP_SUMMARY else # Don't waste money. echo "No commits in the past 24 hours." >> $GITHUB_STEP_SUMMARY From f1a2aba87a91ae10eb025a90449cd5027787b364 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Petrovick=C3=BD?= Date: Sat, 6 Jun 2026 10:49:19 +0200 Subject: [PATCH 4/4] Enable enterprise --- .github/workflows/performance_quickstarts.yml | 46 ++++++++++++++++++- benchmark-quickstarts.py | 1 + 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/.github/workflows/performance_quickstarts.yml b/.github/workflows/performance_quickstarts.yml index 482b70a..1ed6b7e 100644 --- a/.github/workflows/performance_quickstarts.yml +++ b/.github/workflows/performance_quickstarts.yml @@ -85,6 +85,19 @@ jobs: shell: bash run: ./mvnw -B -Dquickly clean install + - name: Checkout timefold-solver-enterprise + uses: actions/checkout@v4 + with: + repository: TimefoldAI/timefold-solver-enterprise + ref: ${{ github.event.inputs.baseline }} + token: ${{ secrets.BENCHMARK_PUBLISH_TOKEN }} + path: ./timefold-solver-enterprise + + - name: Quickly build timefold-solver-enterprise + working-directory: ./timefold-solver-enterprise + shell: bash + run: ./mvnw -B -Dquickly clean install + - name: Switch quickstarts to baseline branch if it exists working-directory: ./timefold-quickstarts shell: bash @@ -100,7 +113,7 @@ jobs: - name: Build the quickstart shell: bash run: | - mvn -B -DskipTests package \ + mvn -B -DskipTests -Penterprise package \ -f timefold-quickstarts/java/${{ matrix.example }}/pom.xml - name: Upload the binaries @@ -145,6 +158,31 @@ jobs: shell: bash run: ./mvnw -B -Dquickly clean install + - name: Checkout timefold-solver-enterprise + uses: actions/checkout@v4 + with: + repository: TimefoldAI/timefold-solver-enterprise + ref: main + token: ${{ secrets.BENCHMARK_PUBLISH_TOKEN }} + path: ./timefold-solver-enterprise + + - name: Switch timefold-solver-enterprise to branch under test if it exists + working-directory: ./timefold-solver-enterprise + shell: bash + env: + TARGET_BRANCH: ${{ github.event.inputs.branch }} + run: | + if git ls-remote --exit-code --heads origin "$TARGET_BRANCH" > /dev/null; then + git fetch --depth=1 origin "$TARGET_BRANCH" + git checkout -B "$TARGET_BRANCH" FETCH_HEAD + fi + git status + + - name: Quickly build timefold-solver-enterprise + working-directory: ./timefold-solver-enterprise + shell: bash + run: ./mvnw -B -Dquickly clean install + - name: Switch quickstarts to branch under test if it exists working-directory: ./timefold-quickstarts shell: bash @@ -160,7 +198,7 @@ jobs: - name: Build the quickstart shell: bash run: | - mvn -B -DskipTests package \ + mvn -B -DskipTests -Penterprise package \ -f timefold-quickstarts/java/${{ matrix.example }}/pom.xml - name: Upload the binaries @@ -228,6 +266,8 @@ jobs: - name: (Baseline) Run the benchmark id: benchmark_baseline shell: bash + env: + TIMEFOLD_ENTERPRISE_LICENSE: ${{ secrets.TIMEFOLD_SOLVER_CI_PROD_LICENSE }} run: | python3 timefold-solver-benchmarks/benchmark-quickstarts.py \ ${{ matrix.example }} ./baseline-app \ @@ -249,6 +289,8 @@ jobs: - name: (SUT) Run the benchmark id: benchmark_sut shell: bash + env: + TIMEFOLD_ENTERPRISE_LICENSE: ${{ secrets.TIMEFOLD_SOLVER_CI_PROD_LICENSE }} run: | python3 timefold-solver-benchmarks/benchmark-quickstarts.py \ ${{ matrix.example }} ./sut-app \ diff --git a/benchmark-quickstarts.py b/benchmark-quickstarts.py index d000475..0deafef 100644 --- a/benchmark-quickstarts.py +++ b/benchmark-quickstarts.py @@ -108,6 +108,7 @@ def _run_once( "java", f"-Dquarkus.http.port={port}", f"-Dquarkus.timefold.solver.termination.spent-limit={time_limit}s", + "-Dquarkus.timefold.solver.move-thread-count=NONE", "-Dquarkus.log.category.ai.timefold.solver.level=INFO", "-Dquarkus.console.color=false", "-jar", str(jar),