|
| 1 | +name: A-B Performance Benchmark |
| 2 | + |
| 3 | +on: |
| 4 | + workflow_dispatch: |
| 5 | + |
| 6 | +permissions: |
| 7 | + contents: read |
| 8 | + |
| 9 | +jobs: |
| 10 | + benchmark: |
| 11 | + name: Paper 26.1.2 A-B benchmark |
| 12 | + runs-on: ubuntu-latest |
| 13 | + timeout-minutes: 20 |
| 14 | + |
| 15 | + steps: |
| 16 | + - name: Check out repository |
| 17 | + uses: actions/checkout@v4 |
| 18 | + |
| 19 | + - name: Set up Java 25 |
| 20 | + uses: actions/setup-java@v4 |
| 21 | + with: |
| 22 | + distribution: temurin |
| 23 | + java-version: "25" |
| 24 | + |
| 25 | + - name: Set up Gradle |
| 26 | + uses: gradle/actions/setup-gradle@v4 |
| 27 | + |
| 28 | + - name: Build disposable benchmark plugin |
| 29 | + run: ./gradlew benchmarkJar --no-daemon --no-build-cache --rerun-tasks |
| 30 | + |
| 31 | + - name: Download stable Paper 26.1.2 |
| 32 | + env: |
| 33 | + PAPER_USER_AGENT: InteractionVisualizer-Benchmark/1.0 (https://github.com/EllanServer/InteractionVisualizer) |
| 34 | + run: | |
| 35 | + mkdir -p benchmark-server/plugins |
| 36 | + BUILDS=$(curl --fail --silent --show-error \ |
| 37 | + -H "User-Agent: $PAPER_USER_AGENT" \ |
| 38 | + https://fill.papermc.io/v3/projects/paper/versions/26.1.2/builds) |
| 39 | + PAPER_URL=$(echo "$BUILDS" | jq -r 'first(.[] | select(.channel == "STABLE") | .downloads."server:default".url) // empty') |
| 40 | + test -n "$PAPER_URL" |
| 41 | + curl --fail --location --show-error \ |
| 42 | + -H "User-Agent: $PAPER_USER_AGENT" \ |
| 43 | + --output benchmark-server/server.jar "$PAPER_URL" |
| 44 | + cp build/libs/InteractionVisualizer-*-benchmark.jar benchmark-server/plugins/ |
| 45 | +
|
| 46 | + - name: Configure isolated benchmark server |
| 47 | + working-directory: benchmark-server |
| 48 | + run: | |
| 49 | + echo 'eula=true' > eula.txt |
| 50 | + cat > server.properties <<'EOF' |
| 51 | + online-mode=false |
| 52 | + level-name=benchmark-world |
| 53 | + level-type=minecraft:flat |
| 54 | + generate-structures=false |
| 55 | + spawn-protection=0 |
| 56 | + view-distance=3 |
| 57 | + simulation-distance=3 |
| 58 | + max-players=1 |
| 59 | + sync-chunk-writes=false |
| 60 | + EOF |
| 61 | +
|
| 62 | + - name: Run alternating A-B measurements |
| 63 | + working-directory: benchmark-server |
| 64 | + run: | |
| 65 | + java -Xms2G -Xmx2G -XX:+UseG1GC -jar server.jar --nogui | tee benchmark-server.log |
| 66 | + test -f plugins/InteractionVisualizerBenchmark/benchmark-results.jsonl |
| 67 | +
|
| 68 | + - name: Publish benchmark results |
| 69 | + if: always() |
| 70 | + uses: actions/upload-artifact@v4 |
| 71 | + with: |
| 72 | + name: interactionvisualizer-ab-${{ github.sha }} |
| 73 | + path: | |
| 74 | + benchmark-server/plugins/InteractionVisualizerBenchmark/benchmark-results.jsonl |
| 75 | + benchmark-server/benchmark-server.log |
| 76 | + if-no-files-found: warn |
| 77 | + retention-days: 30 |
0 commit comments