From 41971058d68f1e104221a9a1cb07d25e781e1ab3 Mon Sep 17 00:00:00 2001 From: John Detter <4099508+jdetter@users.noreply.github.com> Date: Tue, 13 Jan 2026 18:37:15 -0600 Subject: [PATCH 1/6] Containerless workflow --- .github/workflows/attach-artifacts.yml | 6 +-- .github/workflows/ci.yml | 58 ++++----------------- .github/workflows/docs-publish.yaml | 6 +-- .github/workflows/docs-test.yaml | 6 +-- .github/workflows/package.yml | 6 +-- .github/workflows/typescript-lint.yml | 7 +-- .github/workflows/typescript-test.yml | 5 +- .github/workflows/upgrade-version-check.yml | 5 +- 8 files changed, 18 insertions(+), 81 deletions(-) diff --git a/.github/workflows/attach-artifacts.yml b/.github/workflows/attach-artifacts.yml index d79ef4bcc53..23ad34343de 100644 --- a/.github/workflows/attach-artifacts.yml +++ b/.github/workflows/attach-artifacts.yml @@ -9,11 +9,7 @@ on: jobs: upload-assets: - runs-on: spacetimedb-new-runner - container: - image: localhost:5000/spacetimedb-ci:latest - options: >- - --privileged + runs-on: spacetimedb-new-runner-2 permissions: contents: write # needed to modify releases diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f01eefbe04f..258f0d1bc75 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,13 +23,10 @@ jobs: name: Smoketests strategy: matrix: - runner: [spacetimedb-new-runner, windows-latest] + runner: [spacetimedb-new-runner-2, windows-latest] include: - - runner: spacetimedb-new-runner + - runner: spacetimedb-new-runner-2 smoketest_args: --docker - container: - image: localhost:5000/spacetimedb-ci:latest - options: --privileged - runner: windows-latest smoketest_args: --no-build-cli container: null @@ -123,11 +120,7 @@ jobs: test: needs: [lints, llm_ci_check] name: Test Suite - runs-on: spacetimedb-new-runner - container: - image: localhost:5000/spacetimedb-ci:latest - options: >- - --privileged + runs-on: spacetimedb-new-runner-2 env: CARGO_TARGET_DIR: ${{ github.workspace }}/target steps: @@ -180,11 +173,7 @@ jobs: lints: name: Lints - runs-on: spacetimedb-new-runner - container: - image: localhost:5000/spacetimedb-ci:latest - options: >- - --privileged + runs-on: spacetimedb-new-runner-2 env: CARGO_TARGET_DIR: ${{ github.workspace }}/target steps: @@ -212,11 +201,7 @@ jobs: wasm_bindings: name: Build and test wasm bindings - runs-on: spacetimedb-new-runner - container: - image: localhost:5000/spacetimedb-ci:latest - options: >- - --privileged + runs-on: spacetimedb-new-runner-2 env: CARGO_TARGET_DIR: ${{ github.workspace }}/target steps: @@ -239,11 +224,7 @@ jobs: publish_checks: name: Check that packages are publishable - runs-on: spacetimedb-new-runner - container: - image: localhost:5000/spacetimedb-ci:latest - options: >- - --privileged + runs-on: spacetimedb-new-runner-2 permissions: read-all steps: - uses: actions/checkout@v3 @@ -272,11 +253,8 @@ jobs: strategy: matrix: include: - - runner: spacetimedb-new-runner + - runner: spacetimedb-new-runner-2 target: x86_64-unknown-linux-gnu - container: - image: localhost:5000/spacetimedb-ci:latest - options: --privileged - { target: aarch64-unknown-linux-gnu, runner: arm-runner } - { target: aarch64-apple-darwin, runner: macos-latest } - { target: x86_64-pc-windows-msvc, runner: windows-latest } @@ -324,7 +302,7 @@ jobs: name: Unreal Engine Tests # This can't go on e.g. ubuntu-latest because that runner runs out of disk space. ChatGPT suggested that the general solution tends to be to use # a custom runner. - runs-on: spacetimedb-new-runner + runs-on: spacetimedb-new-runner-2 # Disable the tests because they are very flaky at the moment. # TODO: Remove this line and re-enable the `if` line just below here. if: false @@ -439,11 +417,7 @@ jobs: cli_docs: name: Check CLI docs permissions: read-all - runs-on: spacetimedb-new-runner - container: - image: localhost:5000/spacetimedb-ci:latest - options: >- - --privileged + runs-on: spacetimedb-new-runner-2 env: CARGO_TARGET_DIR: ${{ github.workspace }}/target steps: @@ -524,12 +498,7 @@ jobs: permissions: contents: read checks: write - runs-on: spacetimedb-new-runner - container: - image: localhost:5000/spacetimedb-ci:latest - options: >- - --privileged - --cgroupns=host + runs-on: spacetimedb-new-runner-2 timeout-minutes: 30 env: CARGO_TARGET_DIR: ${{ github.workspace }}/target @@ -649,12 +618,7 @@ jobs: csharp-testsuite: needs: [lints, llm_ci_check] - runs-on: spacetimedb-new-runner - container: - image: localhost:5000/spacetimedb-ci:latest - options: >- - --privileged - --cgroupns=host + runs-on: spacetimedb-new-runner-2 timeout-minutes: 30 env: CARGO_TARGET_DIR: ${{ github.workspace }}/target diff --git a/.github/workflows/docs-publish.yaml b/.github/workflows/docs-publish.yaml index 0f27c09f919..4b068d00bc3 100644 --- a/.github/workflows/docs-publish.yaml +++ b/.github/workflows/docs-publish.yaml @@ -10,11 +10,7 @@ on: jobs: build: - runs-on: spacetimedb-new-runner - container: - image: localhost:5000/spacetimedb-ci:latest - options: >- - --privileged + runs-on: spacetimedb-new-runner-2 steps: - name: Checkout repository uses: actions/checkout@v3 diff --git a/.github/workflows/docs-test.yaml b/.github/workflows/docs-test.yaml index 111ca49f62a..b7233aad847 100644 --- a/.github/workflows/docs-test.yaml +++ b/.github/workflows/docs-test.yaml @@ -7,11 +7,7 @@ on: jobs: build: - runs-on: spacetimedb-new-runner - container: - image: localhost:5000/spacetimedb-ci:latest - options: >- - --privileged + runs-on: spacetimedb-new-runner-2 steps: - name: Checkout repository uses: actions/checkout@v3 diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index e9ccf1d8bec..11c0aeafdeb 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -16,11 +16,7 @@ jobs: include: - name: x86_64 Linux target: x86_64-unknown-linux-gnu - runner: spacetimedb-new-runner - container: - image: localhost:5000/spacetimedb-ci:latest - options: >- - --privileged + runner: spacetimedb-new-runner-2 - { name: aarch64 Linux, target: aarch64-unknown-linux-gnu, runner: arm-runner } # Disabled because musl builds weren't working and we didn't want to investigate. See https://github.com/clockworklabs/SpacetimeDB/pull/2964. # - { name: x86_64 Linux musl, target: x86_64-unknown-linux-musl, runner: bare-metal, container: alpine } diff --git a/.github/workflows/typescript-lint.yml b/.github/workflows/typescript-lint.yml index fee7aa442a0..8eca0cac19b 100644 --- a/.github/workflows/typescript-lint.yml +++ b/.github/workflows/typescript-lint.yml @@ -9,12 +9,7 @@ on: jobs: build: - runs-on: spacetimedb-new-runner - container: - image: localhost:5000/spacetimedb-ci:latest - options: --privileged - - + runs-on: spacetimedb-new-runner-2 steps: - name: Checkout repository uses: actions/checkout@v4 diff --git a/.github/workflows/typescript-test.yml b/.github/workflows/typescript-test.yml index 9db08917f87..4009d919280 100644 --- a/.github/workflows/typescript-test.yml +++ b/.github/workflows/typescript-test.yml @@ -13,10 +13,7 @@ concurrency: jobs: build-and-test: - runs-on: spacetimedb-new-runner - container: - image: localhost:5000/spacetimedb-ci:latest - options: --privileged + runs-on: spacetimedb-new-runner-2 env: CARGO_TARGET_DIR: ${{ github.workspace }}/target diff --git a/.github/workflows/upgrade-version-check.yml b/.github/workflows/upgrade-version-check.yml index 41f8f178573..6b97d825a38 100644 --- a/.github/workflows/upgrade-version-check.yml +++ b/.github/workflows/upgrade-version-check.yml @@ -8,10 +8,7 @@ permissions: read-all jobs: version_upgrade_check: - runs-on: spacetimedb-new-runner - container: - image: localhost:5000/spacetimedb-ci:latest - options: --privileged + runs-on: spacetimedb-new-runner-2 steps: - name: Checkout uses: actions/checkout@v3 From 735dd2a53ad88237fef49df6ff6934da306ced95 Mon Sep 17 00:00:00 2001 From: John Detter <4099508+jdetter@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:10:12 -0600 Subject: [PATCH 2/6] Update machines again --- .github/workflows/attach-artifacts.yml | 2 +- .github/workflows/ci.yml | 2 +- .github/workflows/docker.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/attach-artifacts.yml b/.github/workflows/attach-artifacts.yml index 23ad34343de..a448c706ba9 100644 --- a/.github/workflows/attach-artifacts.yml +++ b/.github/workflows/attach-artifacts.yml @@ -9,7 +9,7 @@ on: jobs: upload-assets: - runs-on: spacetimedb-new-runner-2 + runs-on: ubuntu-latest permissions: contents: write # needed to modify releases diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 258f0d1bc75..70f6155bad6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -224,7 +224,7 @@ jobs: publish_checks: name: Check that packages are publishable - runs-on: spacetimedb-new-runner-2 + runs-on: ubuntu-latest permissions: read-all steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index c603fa598d6..25a06ec36e4 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -11,7 +11,7 @@ on: jobs: docker-amd64: - runs-on: ubuntu-latest + runs-on: spacetimedb-new-runner-2 name: Build DockerHub AMD64 Container steps: - name: Checkout From 4866f7b5cb296226b5d28b39a6efd2a579e421ea Mon Sep 17 00:00:00 2001 From: John Detter <4099508+jdetter@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:19:37 -0600 Subject: [PATCH 3/6] Use Unity runner as well --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 70f6155bad6..a43ba689d38 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -498,7 +498,7 @@ jobs: permissions: contents: read checks: write - runs-on: spacetimedb-new-runner-2 + runs-on: spacetimedb-unity-runner timeout-minutes: 30 env: CARGO_TARGET_DIR: ${{ github.workspace }}/target From 64dc12240e7fd79913ef8d13e76c05f6dd4d39f5 Mon Sep 17 00:00:00 2001 From: John Detter <4099508+jdetter@users.noreply.github.com> Date: Fri, 16 Jan 2026 17:09:03 -0600 Subject: [PATCH 4/6] Fix symlinks --- .github/workflows/ci.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a43ba689d38..30ae43a1d14 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -83,10 +83,6 @@ jobs: shell: powershell - name: Build crates run: cargo build -p spacetimedb-cli -p spacetimedb-standalone -p spacetimedb-update - - name: Start Docker daemon - if: runner.os == 'Linux' - run: /usr/local/bin/start-docker.sh - - name: Build and start database (Linux) if: runner.os == 'Linux' run: | @@ -552,7 +548,7 @@ jobs: cargo install --force --path crates/cli --locked --message-format=short cargo install --force --path crates/standalone --locked --message-format=short # Add a handy alias using the old binary name, so that we don't have to rewrite all scripts (incl. in submodules). - ln -sf $CARGO_HOME/bin/spacetimedb-cli $CARGO_HOME/bin/spacetime + sudo ln -sf $CARGO_HOME/bin/spacetimedb-cli $CARGO_HOME/bin/spacetime - name: Generate client bindings working-directory: demo/Blackholio/server-rust @@ -673,7 +669,7 @@ jobs: cargo install --force --path crates/cli --locked --message-format=short cargo install --force --path crates/standalone --locked --message-format=short # Add a handy alias using the old binary name, so that we don't have to rewrite all scripts (incl. in submodules). - ln -sf $CARGO_HOME/bin/spacetimedb-cli $CARGO_HOME/bin/spacetime + sudo ln -sf $CARGO_HOME/bin/spacetimedb-cli $CARGO_HOME/bin/spacetime # This step shouldn't be needed, but somehow we end up with caches that are missing librusty_v8.a. # ChatGPT suspects that this could be due to different build invocations using the same target dir, From 38e2cf36b31c25bf7ac04823d474a446d9dd3819 Mon Sep 17 00:00:00 2001 From: John Detter <4099508+jdetter@users.noreply.github.com> Date: Fri, 16 Jan 2026 17:12:15 -0600 Subject: [PATCH 5/6] Undo simlink fix but keep removing docker in docker --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 30ae43a1d14..a7c668ffb30 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -548,7 +548,7 @@ jobs: cargo install --force --path crates/cli --locked --message-format=short cargo install --force --path crates/standalone --locked --message-format=short # Add a handy alias using the old binary name, so that we don't have to rewrite all scripts (incl. in submodules). - sudo ln -sf $CARGO_HOME/bin/spacetimedb-cli $CARGO_HOME/bin/spacetime + ln -sf $CARGO_HOME/bin/spacetimedb-cli $CARGO_HOME/bin/spacetime - name: Generate client bindings working-directory: demo/Blackholio/server-rust @@ -669,7 +669,7 @@ jobs: cargo install --force --path crates/cli --locked --message-format=short cargo install --force --path crates/standalone --locked --message-format=short # Add a handy alias using the old binary name, so that we don't have to rewrite all scripts (incl. in submodules). - sudo ln -sf $CARGO_HOME/bin/spacetimedb-cli $CARGO_HOME/bin/spacetime + ln -sf $CARGO_HOME/bin/spacetimedb-cli $CARGO_HOME/bin/spacetime # This step shouldn't be needed, but somehow we end up with caches that are missing librusty_v8.a. # ChatGPT suspects that this could be due to different build invocations using the same target dir, From 20998987151b855cefb5400e6084b0037c15179d Mon Sep 17 00:00:00 2001 From: John Detter <4099508+jdetter@users.noreply.github.com> Date: Fri, 16 Jan 2026 18:04:33 -0600 Subject: [PATCH 6/6] Remove docker in docker --- .github/workflows/ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a7c668ffb30..6c8ae009e57 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -595,9 +595,6 @@ jobs: key: Unity-${{ github.head_ref }} restore-keys: Unity- - # We need this to support "Docker in Docker" - - name: Start Docker daemon - run: /usr/local/bin/start-docker.sh - name: Run Unity tests uses: game-ci/unity-test-runner@v4 with: