diff --git a/.github/example-run/breakout.ron b/.github/example-run/breakout.ron deleted file mode 100644 index f2036f4a4986cb..00000000000000 --- a/.github/example-run/breakout.ron +++ /dev/null @@ -1,5 +0,0 @@ -( - exit_after: Some(900), - frame_time: Some(0.03), - screenshot_frames: [200], -) diff --git a/.github/example-run/compute_shader_game_of_life.ron b/.github/example-run/compute_shader_game_of_life.ron new file mode 100644 index 00000000000000..d170958d73bad6 --- /dev/null +++ b/.github/example-run/compute_shader_game_of_life.ron @@ -0,0 +1,3 @@ +( + exit_after: Some(300) +) diff --git a/.github/example-run/contributors.ron b/.github/example-run/contributors.ron deleted file mode 100644 index 1d78f6a73ad808..00000000000000 --- a/.github/example-run/contributors.ron +++ /dev/null @@ -1,3 +0,0 @@ -( - exit_after: Some(900) -) diff --git a/.github/example-run/load_gltf.ron b/.github/example-run/load_gltf.ron deleted file mode 100644 index 13f79f298c3162..00000000000000 --- a/.github/example-run/load_gltf.ron +++ /dev/null @@ -1,5 +0,0 @@ -( - exit_after: Some(300), - frame_time: Some(0.03), - screenshot_frames: [100], -) diff --git a/.github/example-run/no_renderer.ron b/.github/example-run/no_renderer.ron deleted file mode 100644 index 22e43495b5e42a..00000000000000 --- a/.github/example-run/no_renderer.ron +++ /dev/null @@ -1,3 +0,0 @@ -( - exit_after: Some(100) -) diff --git a/.github/example-run/scene.ron b/.github/example-run/scene.ron deleted file mode 100644 index 22e43495b5e42a..00000000000000 --- a/.github/example-run/scene.ron +++ /dev/null @@ -1,3 +0,0 @@ -( - exit_after: Some(100) -) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1eaa00abbdc1b2..53d21b28288f8b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,200 +4,12 @@ on: merge_group: pull_request: push: - branches: - - main env: CARGO_TERM_COLOR: always NIGHTLY_TOOLCHAIN: nightly jobs: - build: - strategy: - matrix: - os: [windows-latest, ubuntu-latest, macos-latest] - runs-on: ${{ matrix.os }} - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: actions/cache@v4 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-cargo-build-stable-${{ hashFiles('**/Cargo.toml') }} - - uses: dtolnay/rust-toolchain@stable - - name: Install alsa and udev - run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev - if: runner.os == 'linux' - - name: Build & run tests - # See tools/ci/src/main.rs for the commands this runs - run: cargo run -p ci -- test - env: - CARGO_INCREMENTAL: 0 - RUSTFLAGS: "-C debuginfo=0 -D warnings" - - ci: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: actions/cache@v4 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-cargo-ci-${{ hashFiles('**/Cargo.toml') }} - - uses: dtolnay/rust-toolchain@stable - with: - components: rustfmt, clippy - - name: Install alsa and udev - run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev libwayland-dev libxkbcommon-dev - - name: CI job - # See tools/ci/src/main.rs for the commands this runs - run: cargo run -p ci -- lints - - miri: - runs-on: macos-14 - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - - uses: actions/cache@v4 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-cargo-miri-${{ hashFiles('**/Cargo.toml') }} - - uses: dtolnay/rust-toolchain@master - with: - toolchain: ${{ env.NIGHTLY_TOOLCHAIN }} - components: miri - - name: CI job - # To run the tests one item at a time for troubleshooting, use - # cargo --quiet test --lib -- --list | sed 's/: test$//' | MIRIFLAGS="-Zmiri-disable-isolation -Zmiri-permissive-provenance -Zmiri-disable-weak-memory-emulation" xargs -n1 cargo miri test -p bevy_ecs --lib -- --exact - run: cargo miri test -p bevy_ecs - env: - # -Zrandomize-layout makes sure we dont rely on the layout of anything that might change - RUSTFLAGS: -Zrandomize-layout - # https://github.com/rust-lang/miri#miri--z-flags-and-environment-variables - # -Zmiri-disable-isolation is needed because our executor uses `fastrand` which accesses system time. - # -Zmiri-permissive-provenance disables warnings against int2ptr casts (since those are used by once_cell) - # -Zmiri-ignore-leaks is necessary because a bunch of tests don't join all threads before finishing. - MIRIFLAGS: -Zmiri-ignore-leaks -Zmiri-disable-isolation -Zmiri-permissive-provenance - - check-compiles: - runs-on: ubuntu-latest - timeout-minutes: 30 - needs: ci - steps: - - uses: actions/checkout@v4 - - uses: actions/cache@v4 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - crates/bevy_ecs_compile_fail_tests/target/ - crates/bevy_reflect_compile_fail_tests/target/ - key: ${{ runner.os }}-cargo-check-compiles-${{ hashFiles('**/Cargo.toml') }} - - uses: dtolnay/rust-toolchain@stable - with: - toolchain: stable - - name: Install alsa and udev - run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev - - name: Check Compile - # See tools/ci/src/main.rs for the commands this runs - run: cargo run -p ci -- compile - - build-wasm: - runs-on: ubuntu-latest - timeout-minutes: 30 - needs: build - steps: - - uses: actions/checkout@v4 - - uses: actions/cache@v4 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ubuntu-assets-cargo-build-wasm-stable-${{ hashFiles('**/Cargo.toml') }} - - uses: dtolnay/rust-toolchain@stable - with: - target: wasm32-unknown-unknown - - name: Check wasm - run: cargo check --target wasm32-unknown-unknown - env: - RUSTFLAGS: --cfg=web_sys_unstable_apis - - markdownlint: - runs-on: ubuntu-latest - timeout-minutes: 30 - needs: check-missing-features-in-docs - if: always() - steps: - - uses: actions/checkout@v4 - with: - # Full git history is needed to get a proper list of changed files within `super-linter` - fetch-depth: 0 - - name: Run Markdown Lint - uses: docker://ghcr.io/github/super-linter:slim-v4 - env: - MULTI_STATUS: false - VALIDATE_ALL_CODEBASE: false - VALIDATE_MARKDOWN: true - DEFAULT_BRANCH: main - - toml: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - name: Install taplo - run: cargo install taplo-cli --locked - - name: Run Taplo - id: taplo - run: taplo fmt --check --diff - - name: Taplo info - if: failure() - run: | - echo 'To fix toml fmt, please run `taplo fmt`' - echo 'To check for a diff, run `taplo fmt --check --diff' - echo 'You can find taplo here: https://taplo.tamasfe.dev/' - echo 'Or if you use VSCode, use the `Even Better Toml` extension with 2 spaces' - echo 'You can find the extension here: https://marketplace.visualstudio.com/items?itemName=tamasfe.even-better-toml' - - typos: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - name: Check for typos - uses: crate-ci/typos@v1.18.2 - - name: Typos info - if: failure() - run: | - echo 'To fix typos, please run `typos -w`' - echo 'To check for a diff, run `typos`' - echo 'You can find typos here: https://crates.io/crates/typos' - echo 'if you use VSCode, you can also install `Typos Spell Checker' - echo 'You can find the extension here: https://marketplace.visualstudio.com/items?itemName=tekumara.typos-vscode' - - run-examples-macos-metal: runs-on: macos-14 timeout-minutes: 30 @@ -241,183 +53,3 @@ jobs: with: name: example-run-macos path: example-run/ - - check-doc: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: actions/cache@v4 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-check-doc-${{ hashFiles('**/Cargo.toml') }} - - uses: dtolnay/rust-toolchain@stable - - name: Install alsa and udev - run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev libwayland-dev libxkbcommon-dev - - name: Build and check doc - # See tools/ci/src/main.rs for the commands this runs - run: cargo run -p ci -- doc - env: - CARGO_INCREMENTAL: 0 - RUSTFLAGS: "-C debuginfo=0" - # This currently report a lot of false positives - # Enable it again once it's fixed - https://github.com/bevyengine/bevy/issues/1983 - # - name: Installs cargo-deadlinks - # run: cargo install --force cargo-deadlinks - # - name: Checks dead links - # run: cargo deadlinks --dir target/doc/bevy - # continue-on-error: true - - check-missing-examples-in-docs: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - name: check for missing metadata - id: missing-metadata - run: cargo run -p build-templated-pages -- check-missing examples - - name: check for missing update - run: cargo run -p build-templated-pages -- update examples - - name: Check for modified files - id: missing-update - run: | - echo "if this step fails, run the following command and commit the changed file on your PR." - echo " > cargo run -p build-templated-pages -- update examples" - git diff --quiet HEAD -- - - name: Save PR number - if: ${{ failure() && github.event_name == 'pull_request' }} - run: | - mkdir -p ./missing-examples - echo ${{ github.event.number }} > ./missing-examples/NR - - name: log failed task - missing metadata - if: ${{ failure() && github.event_name == 'pull_request' && steps.missing-metadata.conclusion == 'failure' }} - run: touch ./missing-examples/missing-metadata - - name: log failed task - missing update - if: ${{ failure() && github.event_name == 'pull_request' && steps.missing-update.conclusion == 'failure' }} - run: touch ./missing-examples/missing-update - - uses: actions/upload-artifact@v4 - if: ${{ failure() && github.event_name == 'pull_request' }} - with: - name: missing-examples - path: missing-examples/ - - check-missing-features-in-docs: - runs-on: ubuntu-latest - timeout-minutes: 30 - needs: check-missing-examples-in-docs - steps: - - uses: actions/checkout@v4 - - name: check for missing features - id: missing-features - run: cargo run -p build-templated-pages -- check-missing features - - name: check for missing update - run: cargo run -p build-templated-pages -- update features - - name: Check for modified files - id: missing-update - run: | - echo "if this step fails, run the following command and commit the changed file on your PR." - echo " > cargo run -p build-templated-pages -- update features" - git diff --quiet HEAD -- - - name: Save PR number - if: ${{ failure() && github.event_name == 'pull_request' }} - run: | - mkdir -p ./missing-features - echo ${{ github.event.number }} > ./missing-features/NR - - name: log failed task - missing features - if: ${{ failure() && github.event_name == 'pull_request' && steps.missing-features.conclusion == 'failure' }} - run: touch ./missing-features/missing-features - - name: log failed task - missing update - if: ${{ failure() && github.event_name == 'pull_request' && steps.missing-update.conclusion == 'failure' }} - run: touch ./missing-features/missing-update - - uses: actions/upload-artifact@v4 - if: ${{ failure() && github.event_name == 'pull_request' }} - with: - name: missing-features - path: missing-features/ - - msrv: - runs-on: ubuntu-latest - timeout-minutes: 30 - needs: build - steps: - - uses: actions/checkout@v4 - - uses: actions/cache@v4 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-cargo-msrv-${{ hashFiles('**/Cargo.toml') }} - - name: get MSRV - run: | - msrv=`cargo metadata --no-deps --format-version 1 | jq --raw-output '.packages[] | select(.name=="bevy") | .rust_version'` - echo "MSRV=$msrv" >> $GITHUB_ENV - - uses: dtolnay/rust-toolchain@master - with: - toolchain: ${{ env.MSRV }} - - name: Install alsa and udev - run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev - - name: Run cargo check - id: check - run: cargo check - - name: Save PR number - if: ${{ failure() && github.event_name == 'pull_request' && steps.check.conclusion == 'failure' }} - run: | - mkdir -p ./msrv - echo ${{ github.event.number }} > ./msrv/NR - - uses: actions/upload-artifact@v4 - if: ${{ failure() && github.event_name == 'pull_request' && steps.check.conclusion == 'failure' }} - with: - name: msrv - path: msrv/ - - check-bevy-internal-imports: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - name: Check for bevy_internal imports - shell: bash - run: | - errors="" - for file in $(find examples tests -name '*.rs'); do - if grep -q "use bevy_internal" "$file"; then - errors+="ERROR: Detected 'use bevy_internal' in $file\n" - fi - done - if [ -n "$errors" ]; then - echo -e "$errors" - echo " Avoid importing bevy_internal, it should not be used directly" - echo " Fix the issue by replacing 'bevy_internal' with 'bevy'" - echo " Example: 'use bevy::sprite::MaterialMesh2dBundle;' instead of 'bevy_internal::sprite::MaterialMesh2dBundle;'" - exit 1 - fi - check-cfg: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: actions/cache@v4 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-check-doc-${{ hashFiles('**/Cargo.toml') }} - - uses: dtolnay/rust-toolchain@master - with: - toolchain: ${{ env.NIGHTLY_TOOLCHAIN }} - - name: Install alsa and udev - run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev libwayland-dev libxkbcommon-dev - - name: Build and check cfg typos - # See tools/ci/src/main.rs for the commands this runs - run: cargo run -p ci -- cfg-check