Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
3e74d18
[bfops/small-runner]: Change runners
bfops Sep 3, 2026
c02d963
[bfops/small-runner]: staging runners
bfops Sep 3, 2026
7b34fd4
[bfops/small-runner]: Merge remote-tracking branch 'origin/master' in…
bfops Sep 3, 2026
43947dc
[bfops/small-runner]: revert
bfops Sep 3, 2026
1de652d
[bfops/small-runner]: revert
bfops Sep 3, 2026
58c9f7a
[bfops/small-runner]: pointless change to force CI re-runs
bfops Sep 3, 2026
dd8db36
[bfops/small-runner]: move to prod runners
bfops Sep 3, 2026
523eefe
Merge branch 'master' into bfops/small-runner
bfops Sep 3, 2026
a18ea5c
[bfops/small-runner]: CI: switch small jobs back to staging runners
bfops Sep 4, 2026
f74e01e
[bfops/small-runner]: Merge remote-tracking branch 'origin/bfops/smal…
bfops Sep 4, 2026
8f37a02
[bfops/small-runner]: CI: move heavier small jobs back to Linux runners
bfops Sep 4, 2026
76ae167
[bfops/small-runner]: CI: keep npm release on small runners
bfops Sep 4, 2026
7d6b779
[bfops/small-runner]: CI: retrigger runner load test
bfops Sep 4, 2026
3836175
[bfops/small-runner]: CI: remove load-test newline
bfops Sep 4, 2026
e521271
[bfops/small-runner]: CI: prepare small-runner saturation test
bfops Sep 4, 2026
7310a77
[bfops/small-runner]: CI: saturation trigger 1/3
bfops Sep 4, 2026
beeb971
[bfops/small-runner]: CI: saturation trigger 2/3
bfops Sep 4, 2026
ff10c65
[bfops/small-runner]: CI: saturation trigger 3/3
bfops Sep 4, 2026
b4cc386
[bfops/small-runner]: CI: give saturation runs unique concurrency groups
bfops Sep 4, 2026
c72eafe
[bfops/small-runner]: CI: saturation trigger 4/6
bfops Sep 4, 2026
b234204
[bfops/small-runner]: CI: saturation trigger 5/6
bfops Sep 4, 2026
9663f49
[bfops/small-runner]: CI: saturation trigger 6/6
bfops Sep 4, 2026
b4c82ed
[bfops/small-runner]: CI: restore workflows after saturation test [sk…
bfops Sep 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/attach-artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ on:

jobs:
upload-assets:
runs-on: spacetimedb-linux
# This only downloads existing artifacts and attaches them to a GitHub release.
runs-on: spacetimedb-linux-small-staging
permissions:
contents: write # needed to modify releases

Expand Down Expand Up @@ -60,4 +61,3 @@ jobs:
gh release upload "$RELEASE_TAG" ./* \
--repo "$GITHUB_REPOSITORY" \
--clobber

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
--clobber
--clobber


3 changes: 2 additions & 1 deletion .github/workflows/check-merge-labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ permissions: read-all
jobs:
label_checks:
name: Check merge labels
runs-on: spacetimedb-linux
# This only inspects event labels and performs no checkout or build.
runs-on: spacetimedb-linux-small-staging
steps:
- if: github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'do not merge')
run: |
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/check-pr-base.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ concurrency:
jobs:
check_base_ref:
name: Based on `master`
runs-on: spacetimedb-linux
# This only evaluates the event base ref and performs no build.
runs-on: spacetimedb-linux-small-staging
steps:
- id: not_based_on_master
if: |
Expand All @@ -26,7 +27,8 @@ jobs:
release_dependencies:
if: ${{ github.event_name == 'pull_request' }}
name: Check release dependencies
runs-on: spacetimedb-linux
# This builds a small CI helper and inspects release metadata and git history.
runs-on: spacetimedb-linux-small-staging
permissions:
contents: read
pull-requests: read
Expand Down
27 changes: 19 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ permissions:
jobs:
merge_queue_noop:
name: Merge queue no-op/reuse
runs-on: spacetimedb-linux
# This compares git trees and builds only the small workflow-coordinator helper.
runs-on: spacetimedb-linux-small-staging
permissions:
actions: write
contents: read
Expand Down Expand Up @@ -584,7 +585,8 @@ jobs:
- name: Windows 2/4
- name: Windows 3/4
- name: Windows 4/4
runs-on: spacetimedb-linux
# These no-op jobs only preserve required smoketest check names after CI reuse.
runs-on: spacetimedb-linux-small-staging
steps:
- name: Skip duplicate merge queue smoketest
run: echo "Merge queue commit has the same tree as the PR head; smoketest already ran for the PR."
Expand Down Expand Up @@ -814,7 +816,8 @@ jobs:
codeowners_check:
if: ${{ github.event_name == 'pull_request' }}
name: CODEOWNERS check
runs-on: spacetimedb-linux
# This builds a small CI helper and checks changed paths and GitHub reviews.
runs-on: spacetimedb-linux-small-staging
permissions:
contents: read
pull-requests: read
Expand Down Expand Up @@ -873,7 +876,8 @@ jobs:
needs: [merge_queue_noop]
if: ${{ needs.merge_queue_noop.outputs.skip != 'true' }}
name: Check that packages are publishable
runs-on: spacetimedb-linux
# This builds a small CI helper and validates package metadata without compiling the workspace.
runs-on: spacetimedb-linux-small-staging
permissions: read-all
env:
RUST_BACKTRACE: full
Expand Down Expand Up @@ -901,7 +905,8 @@ jobs:
strategy:
matrix:
include:
- { target: x86_64-unknown-linux-gnu, runner: spacetimedb-linux }
# The Linux update-flow test uses released artifacts and builds only its small CI driver.
- { target: x86_64-unknown-linux-gnu, runner: spacetimedb-linux-small-staging }
- { target: aarch64-apple-darwin, runner: macos-latest }
- { target: x86_64-pc-windows-msvc, runner: windows-latest }
runs-on: ${{ matrix.runner }}
Expand Down Expand Up @@ -950,7 +955,8 @@ jobs:
- { target: x86_64-unknown-linux-gnu }
- { target: aarch64-apple-darwin }
- { target: x86_64-pc-windows-msvc }
runs-on: spacetimedb-linux
# These no-op jobs only preserve required update-flow check names after CI reuse.
runs-on: spacetimedb-linux-small-staging
steps:
- name: Skip duplicate merge queue update test
run: echo "Merge queue commit has the same tree as the PR head; update-flow already ran for the PR."
Expand Down Expand Up @@ -1319,6 +1325,7 @@ jobs:
if: ${{ needs.merge_queue_noop.outputs.skip != 'true' }}
permissions:
contents: read
# The .NET packaging, Godot project build, and integration test make this too heavy for a small runner.
runs-on: spacetimedb-linux
env:
CARGO_TARGET_DIR: ${{ github.workspace }}/target
Expand Down Expand Up @@ -1426,6 +1433,7 @@ jobs:
csharp-testsuite:
needs: [merge_queue_noop, lints, upload-build-artifacts-linux]
if: ${{ needs.merge_queue_noop.outputs.skip != 'true' }}
# The C# SDK build and tests saturated the small runner's CPU, so keep this on the main runner.
runs-on: spacetimedb-linux
timeout-minutes: 30
env:
Expand Down Expand Up @@ -1549,7 +1557,8 @@ jobs:
needs: [merge_queue_noop]
if: ${{ needs.merge_queue_noop.outputs.skip != 'true' }}
name: Verify global.json files are symlinks
runs-on: spacetimedb-linux
# This builds a small CI helper and checks symlink policy without building SpacetimeDB.
runs-on: spacetimedb-linux-small-staging
permissions:
contents: read
env:
Expand Down Expand Up @@ -1590,7 +1599,8 @@ jobs:
needs: [merge_queue_noop]
if: ${{ needs.merge_queue_noop.outputs.skip != 'true' }}
name: Check smoketests/mod.rs is complete
runs-on: spacetimedb-linux
# This builds a tiny source-scanning helper and does not compile or run smoketests.
runs-on: spacetimedb-linux-small-staging
permissions:
contents: read
env:
Expand Down Expand Up @@ -1624,6 +1634,7 @@ jobs:
needs: [merge_queue_noop]
if: ${{ needs.merge_queue_noop.outputs.skip != 'true' }}
name: Docs build
# Building the documentation site nearly saturated a small runner and used substantial memory.
runs-on: spacetimedb-linux
env:
RUST_BACKTRACE: full
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/cla-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ permissions:
jobs:
publish-cla-gate-status:
name: CLA status
runs-on: spacetimedb-linux
# This only evaluates GitHub status metadata and publishes a commit status.
runs-on: spacetimedb-linux-small-staging
if: github.event_name != 'status' || github.event.context == 'license/cla'

steps:
Expand Down
15 changes: 10 additions & 5 deletions .github/workflows/discord-posts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ permissions:

jobs:
resolvePush:
runs-on: spacetimedb-linux
# This only resolves GitHub event metadata and performs no checkout or build.
runs-on: spacetimedb-linux-small-staging
outputs:
is_pr_merge: ${{ steps.resolve.outputs.is_pr_merge }}
is_external: ${{ steps.resolve.outputs.is_external }}
Expand Down Expand Up @@ -80,7 +81,8 @@ jobs:

discordNotification:
needs: resolvePush
runs-on: spacetimedb-linux
# This only queries pull-request checks and posts a Discord notification.
runs-on: spacetimedb-linux-small-staging
if: needs.resolvePush.outputs.is_pr_merge == 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down Expand Up @@ -157,7 +159,8 @@ jobs:
needs:
- resolvePush
- discordNotification
runs-on: spacetimedb-linux
# This failure path only posts a Discord notification.
runs-on: spacetimedb-linux-small-staging
if: ${{ always() && (needs.resolvePush.result == 'failure' || needs.discordNotification.result == 'failure') }}
steps:
- name: Send failure notification
Expand All @@ -172,7 +175,8 @@ jobs:

warnDirectPush:
needs: resolvePush
runs-on: spacetimedb-linux
# This only formats commit metadata and posts a Discord warning.
runs-on: spacetimedb-linux-small-staging
if: needs.resolvePush.outputs.is_pr_merge != 'true'
steps:
- name: Warn about non-PR push
Expand All @@ -197,7 +201,8 @@ jobs:

invokePrivate:
needs: resolvePush
runs-on: spacetimedb-linux
# This only dispatches the private workflow through the GitHub API.
runs-on: spacetimedb-linux-small-staging
if: needs.resolvePush.outputs.is_pr_merge == 'true'
permissions:
contents: read
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/docs-publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ on:

jobs:
build:
runs-on: spacetimedb-linux
# This builds and uploads the documentation site, not SpacetimeDB binaries.
runs-on: spacetimedb-linux-small-staging
steps:
- name: Checkout repository
uses: actions/checkout@v3
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/docs-update-llms.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ on:

jobs:
update-llms:
runs-on: spacetimedb-linux
# This builds documentation assets and updates one generated text file.
runs-on: spacetimedb-linux-small-staging
steps:
- name: Checkout repository
uses: actions/checkout@v3
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/internal-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ jobs:
# Skip if this is an external contribution. GitHub secrets will be empty, so the step would fail anyway.
if: ${{ (github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref == 'refs/heads/master'))
&& (github.event_name != 'pull_request' || !github.event.pull_request.head.repo.fork) }}
runs-on: spacetimedb-linux
# This builds small workflow helpers, dispatches private CI, and waits for its result.
runs-on: spacetimedb-linux-small-staging
env:
TARGET_OWNER: clockworklabs
TARGET_REPO: SpacetimeDBPrivate
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/llm-benchmark-periodic.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@ concurrency:
jobs:
prepare_matrix:
name: Prepare benchmark matrix
runs-on: spacetimedb-linux
# This only parses workflow inputs into a JSON matrix and performs no benchmark work.
runs-on: spacetimedb-linux-small-staging
outputs:
languages: ${{ steps.matrix.outputs.languages }}
steps:
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/pr_approval_check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ concurrency:
jobs:
publish-approval-status:
name: Set approval status
runs-on: spacetimedb-linux
# This disabled metadata-only job performs no checkout or build when re-enabled.
runs-on: spacetimedb-linux-small-staging
# Disabled until we can spend some more focus on making this work consistently.
# See https://github.com/clockworklabs/SpacetimeDB/pull/4673.
if: false
Expand Down
15 changes: 10 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@ concurrency:
jobs:
validate-release-invoker:
name: Validate release invoker
runs-on: spacetimedb-linux
# This only validates workflow inputs and the invoking actor.
runs-on: spacetimedb-linux-small-staging
steps:
- name: Reject direct public release invocations
env:
Expand Down Expand Up @@ -109,7 +110,8 @@ jobs:

release-crates:
needs: build-cargo-release
runs-on: spacetimedb-linux
# This packages and publishes crates with the prebuilt release helper; it does not build the workspace.
runs-on: spacetimedb-linux-small-staging
if: ${{ inputs.release_crates }}
env:
CARGO_TERM_COLOR: always
Expand Down Expand Up @@ -230,7 +232,8 @@ jobs:

release-cpp:
needs: build-cargo-release
runs-on: spacetimedb-linux
# This updates and publishes the generated C++ SDK repository without a core build.
runs-on: spacetimedb-linux-small-staging
if: ${{ inputs.release_cpp }}
env:
CARGO_TERM_COLOR: always
Expand Down Expand Up @@ -380,7 +383,8 @@ jobs:

update-mirror-latest-version:
needs: validate-release-invoker
runs-on: spacetimedb-linux
# This only verifies S3 objects and updates the latest-version marker.
runs-on: spacetimedb-linux-small-staging
if: ${{ !inputs.dry_run && inputs.update_mirror_latest_version }}

steps:
Expand Down Expand Up @@ -422,7 +426,8 @@ jobs:
- release-npm
- release-docker
- update-mirror-latest-version
runs-on: spacetimedb-linux
# This only publishes existing artifacts and dispatches the release announcement.
runs-on: spacetimedb-linux-small-staging
if: >-
${{
always()
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/retry-cla-assistant.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ permissions:
jobs:
retry-cla:
name: Retry CLA Assistant if it is the only blocker
runs-on: spacetimedb-linux
# This builds a small CI helper and only queries or retries CLA checks.
runs-on: spacetimedb-linux-small-staging

steps:
- name: Check out trusted base code
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/tag-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ jobs:
# Internal/team announcement (simple)
announce-release:
name: Announce GitHub release (Internal)
runs-on: spacetimedb-linux
# This only formats release metadata and posts a Discord notification.
runs-on: spacetimedb-linux-small-staging
if: >-
${{
github.event_name == 'release'
Expand All @@ -52,7 +53,8 @@ jobs:
# Public announcement with full release notes
public-discord-notification:
name: Announce GitHub release (Public)
runs-on: spacetimedb-linux
# This only formats release notes and posts them to Discord.
runs-on: spacetimedb-linux-small-staging
steps:
- name: Send Discord notification
env:
Expand Down