From 64a085c4f4e60d0a9ac26f4283735a7c2acc4924 Mon Sep 17 00:00:00 2001 From: Leroy Hopson Date: Sat, 28 Jun 2025 18:19:53 +1200 Subject: [PATCH 1/7] chore: use https url for vtebench submodule This means that an SSH key is not required to clone the (public) submodule. --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 0c376d6..eb2349e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -12,4 +12,4 @@ url = https://github.com/microsoft/node-pty [submodule "benchmark/vtebench"] path = benchmark/vtebench - url = git@github.com:alacritty/vtebench + url = https://github.com/alacritty/vtebench From 344b303864495b9cb8e1fae93c2a7e3694c7f3a7 Mon Sep 17 00:00:00 2001 From: Leroy Hopson Date: Sat, 28 Jun 2025 18:21:21 +1200 Subject: [PATCH 2/7] ci: trigger build and test on pull request --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0d925ac..1b70324 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -2,6 +2,7 @@ name: "Build and Test" on: push: + pull_request: schedule: # Build and test daily. - cron: 0 11 * * * From 35194cb6c0179b670072ed0d6bcd5b252fdf67b5 Mon Sep 17 00:00:00 2001 From: Leroy Hopson Date: Sat, 28 Jun 2025 18:35:08 +1200 Subject: [PATCH 3/7] fix(ci): update npm cache action Replaces the (now deprecated) c-hive/gha-npm-cache with actions/setup-node which now has the same functionality. --- .github/workflows/main.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1b70324..2a1c470 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -210,10 +210,12 @@ jobs: - name: Export for web shell: bash run: godot --no-window --export-release Web - - name: NPM cache - uses: c-hive/gha-npm-cache@v1 + - name: Setup Node.js + uses: actions/setup-node@v4 with: - directory: test/web + node-version: "20" + cache: "npm" + cache-dependency-path: test/web/package-lock.json - name: Smoke test Web export shell: bash working-directory: test/web From bd26137e78e65e59459c3f2d6833687d34e112e5 Mon Sep 17 00:00:00 2001 From: Leroy Hopson Date: Sat, 28 Jun 2025 18:54:34 +1200 Subject: [PATCH 4/7] fix(ci): resolve mkdir and CMake cache issues --- .github/workflows/main.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2a1c470..f7c1765 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -136,6 +136,10 @@ jobs: BITS: ${{ matrix.arch == 'x86_64' && 64 || 32 }} run: | cd addons/godot_xterm/native/thirdparty/libuv + # Clean only CMake configuration files to avoid stale cache issues + mkdir -p build + rm -f build/CMakeCache.txt + rm -rf build/CMakeFiles args="-DCMAKE_BUILD_TYPE=$TARGET -DBUILD_SHARED_LIBS=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE \ -DCMAKE_OSX_ARCHITECTURES=x86_64;arm64" if [ "$TARGET" == "release" ]; then @@ -146,7 +150,6 @@ jobs: if [ "$BITS" -eq 32 -a "$PLATFORM" == "windows" ]; then cmake -G "Visual Studio 17 2022" -A Win32 -S $(pwd) -B "build" $args else - mkdir build || true cd build if [ "$BITS" -eq 32 ]; then args="$args -DCMAKE_SYSTEM_PROCESSOR=i686 -DCMAKE_C_FLAGS=-m32"; fi cmake .. $args From 5f3a78cee2fddcd0c32a85239122eb953c171feb Mon Sep 17 00:00:00 2001 From: Leroy Hopson Date: Sun, 29 Jun 2025 11:06:31 +1200 Subject: [PATCH 5/7] ci: adjust benchmark alert/fail thresholds Alerts were too noisy. --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f7c1765..a028931 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -406,7 +406,7 @@ jobs: tool: "customSmallerIsBetter" output-file-path: benchmark/results/all.json external-data-json-path: ./cache/benchmark-data.json - alert-threshold: "20%" + alert-threshold: "120%" fail-threshold: "200%" github-token: ${{ secrets.GITHUB_TOKEN }} comment-on-alert: true From 7a522a34109390937d7a2579329f82be6025c453 Mon Sep 17 00:00:00 2001 From: Leroy Hopson Date: Sun, 29 Jun 2025 10:19:22 +1200 Subject: [PATCH 6/7] fix(ci): only run benchmarks if build passed Otherwise the benchmark steps will run indefinitely. --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a028931..05a7f6c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -356,6 +356,7 @@ jobs: run: godot --editor --headless --quit-after 100 || true - name: Wait for build uses: fountainhead/action-wait-for-check@v1.2.0 + id: wait-for-build with: token: ${{ secrets.GITHUB_TOKEN }} checkName: "Build (linux, x86_64, release) #${{ github.run_number }}" @@ -366,6 +367,7 @@ jobs: path: addons/godot_xterm/native/bin merge-multiple: true - name: Benchmark + if: steps.wait-for-build.outputs.conclusion == 'success' shell: bash run: just bench ${{matrix.benchmark}} - name: Upload results From 91163e3eae65fb0bdf67a65cbecf350e552ba662 Mon Sep 17 00:00:00 2001 From: Leroy Hopson Date: Mon, 30 Jun 2025 19:46:42 +1200 Subject: [PATCH 7/7] fix(ci): add timeout to benchmark step If there are certain errors running the scene (e.g. script errors), Godot will log the error but never quit, meaning the step will continue to run indefinitely. This adds a 2 minute timeout to prevent that. --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 05a7f6c..482f677 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -370,6 +370,7 @@ jobs: if: steps.wait-for-build.outputs.conclusion == 'success' shell: bash run: just bench ${{matrix.benchmark}} + timeout-minutes: 2 - name: Upload results uses: actions/upload-artifact@v4 with: