Open-Source Wikis

/

Bevy

/

How to contribute

/

Tooling

bevyengine/bevy

Tooling

The internal tooling that lives under tools/, plus the configuration files that govern style and CI. None of this is published to crates.io; it exists to make the workspace easier to develop in.

tools/ci

The single source of truth for "what does CI run?" Defined as a regular Cargo binary at tools/ci/. Subcommands map to focused jobs:

Command What it does Source
cargo run -p ci -- check The default — runs every check below. tools/ci/src/ci.rs
cargo run -p ci -- format cargo fmt --all -- --check. tools/ci/src/commands/format.rs
cargo run -p ci -- lints Format + clippy + doc lints. tools/ci/src/commands/lints.rs
cargo run -p ci -- clippy Workspace-wide cargo clippy. tools/ci/src/commands/clippy.rs
cargo run -p ci -- compile Just cargo check everything; no tests. tools/ci/src/commands/compile.rs
cargo run -p ci -- compile-check cargo check with --all-targets. tools/ci/src/commands/compile_check.rs
cargo run -p ci -- test cargo test --workspace --no-fail-fast. tools/ci/src/commands/test.rs
cargo run -p ci -- test-check cargo check --tests. tools/ci/src/commands/test_check.rs
cargo run -p ci -- doc cargo doc --no-deps --workspace. tools/ci/src/commands/doc.rs
cargo run -p ci -- doc-check Doc warnings as errors. tools/ci/src/commands/doc_check.rs
cargo run -p ci -- doc-test Run rustdoc tests. tools/ci/src/commands/doc_test.rs
cargo run -p ci -- bench-check cargo check -p benches. tools/ci/src/commands/bench_check.rs
cargo run -p ci -- compile-fail Run trybuild compile-fail tests. tools/ci/src/commands/compile_fail.rs
cargo run -p ci -- example-check cargo check --examples per example. tools/ci/src/commands/example_check.rs
cargo run -p ci -- integration-test / -check / -clean Run/check/clean tests-integration/. tools/ci/src/commands/integration_test*.rs

The binary is invoked directly by the GitHub workflows in .github/workflows/ci.yml. Reproducing CI locally is a single command.

tools/build-templated-pages

A code-generator that updates files in the repo from data sources. Run it after adding examples or features.

cargo run -p build-templated-pages -- update examples
cargo run -p build-templated-pages -- update features

It rewrites:

  • examples/README.md from the [[example]] metadata in the workspace Cargo.toml.
  • docs/cargo_features.md from the [features] table.

CI checks the regenerated output against what's committed and fails if they differ.

Source: tools/build-templated-pages/src/.

tools/build-wasm-example

Builds an example for the browser using wasm-bindgen. Outputs an HTML page plus the .wasm file you can drop on any static-file host:

cargo run -p build-wasm-example -- breakout

The output goes to examples/wasm/target/. Wasm-builds use the webgl2 and webgpu features; pass --api webgl2 or --api webgpu to force a backend.

Source: tools/build-wasm-example/.

tools/example-showcase

Runs every example for a few seconds and captures a screenshot. The repo's CI uploads the screenshots to Pixel Eagle for visual regression review.

cargo run -p example-showcase -- run-examples

Source: tools/example-showcase/.

tools/build-easefunction-graphs

Generates the SVG plots embedded in bevy_math::curve documentation, so the rustdoc stays in sync with the implementations.

cargo run -p build-easefunction-graphs

Source: tools/build-easefunction-graphs/.

tools/compile_fail_utils

Helper used by the compile_fail/ test crates to share infrastructure for trybuild assertions across bevy_derive, bevy_ecs, and bevy_reflect.

Source: tools/compile_fail_utils/.

tools/export-content

Exports release notes and migration guides into the format the Bevy website expects. Used at release time by the post-release.yml workflow.

Source: tools/export-content/.

Configuration files

File Purpose
Cargo.toml (root) Workspace, members, lints, dependencies, [[example]] entries. ~3,400 lines.
clippy.toml Doc-valid identifiers, banned methods (the f32::* math ban), macro brace conventions.
rustfmt.toml Bevy's formatting config — minimal, mostly defaults.
deny.toml cargo-deny rules for licenses and advisories.
typos.toml Custom dictionary for the typos spell checker.
.cargo/config_fast_builds.toml "Fast compiles" toolchain config; copy to .cargo/config.toml to opt in.
.gitattributes, .gitignore Standard Git config, plus special handling for binary asset diff suppression.

CI workflows

The GitHub Actions workflows that consume the above:

Workflow What it does
.github/workflows/ci.yml The main CI — calls tools/ci. Runs on every PR.
.github/workflows/dependencies.yml Periodic cargo update and dependency review.
.github/workflows/docs.yml Builds rustdoc and uploads to GitHub Pages.
.github/workflows/example-run.yml Runs examples and captures screenshots.
.github/workflows/example-run-report.yml Posts the example run results back to PRs.
.github/workflows/send-screenshots-to-pixeleagle.yml Uploads screenshots for visual diff.
.github/workflows/post-release.yml Publishes crates and updates the website after a release.
.github/workflows/security-static-analysis.yml cargo audit + cargo deny.
.github/workflows/update-caches.yml Refreshes the GitHub Actions cache.
.github/workflows/welcome.yml First-time-contributor greeting.
.github/workflows/validation-jobs.yml Periodic deeper checks.
.github/workflows/action-on-PR-labeled.yml Routes PRs based on labels.
.github/workflows/ci-comment-failures.yml Posts CI failure summaries to PRs.

Useful third-party tooling

Not maintained in-tree, but the community uses these enough to mention:

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Tooling – Bevy wiki | Factory