diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2e036be68c77c..7eb6d3ef987d4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,33 +13,33 @@ env: 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@v3 - 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" + # 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@v3 + # 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 @@ -64,295 +64,295 @@ jobs: # See tools/ci/src/main.rs for the commands this runs run: cargo run -p ci -- lints - miri: - runs-on: ubuntu-latest - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - - uses: actions/cache@v3 - 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: 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 - # 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 + # miri: + # runs-on: ubuntu-latest + # timeout-minutes: 60 + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/cache@v3 + # 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: 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 + # # 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@v3 - 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 + # check-compiles: + # runs-on: ubuntu-latest + # timeout-minutes: 30 + # needs: ci + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/cache@v3 + # 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@v3 - 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 + # build-wasm: + # runs-on: ubuntu-latest + # timeout-minutes: 30 + # needs: build + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/cache@v3 + # 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 + # 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 - run-examples-on-windows-dx12: - runs-on: windows-latest - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 + # run-examples-on-windows-dx12: + # runs-on: windows-latest + # timeout-minutes: 60 + # steps: + # - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable + # - uses: dtolnay/rust-toolchain@stable - - uses: actions/cache@v3 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-windows-run-examples-${{ hashFiles('**/Cargo.toml') }} + # - uses: actions/cache@v3 + # with: + # path: | + # ~/.cargo/bin/ + # ~/.cargo/registry/index/ + # ~/.cargo/registry/cache/ + # ~/.cargo/git/db/ + # target/ + # key: ${{ runner.os }}-windows-run-examples-${{ hashFiles('**/Cargo.toml') }} - - name: Build bevy - shell: bash - # this uses the same command as when running the example to ensure build is reused - run: | - WGPU_BACKEND=dx12 CI_TESTING_CONFIG=.github/example-run/alien_cake_addict.ron cargo build --example alien_cake_addict --features "bevy_ci_testing" + # - name: Build bevy + # shell: bash + # # this uses the same command as when running the example to ensure build is reused + # run: | + # WGPU_BACKEND=dx12 CI_TESTING_CONFIG=.github/example-run/alien_cake_addict.ron cargo build --example alien_cake_addict --features "bevy_ci_testing" - - name: Run examples - shell: bash - run: | - for example in .github/example-run/*.ron; do - example_name=`basename $example .ron` - echo "running $example_name - "`date` - time WGPU_BACKEND=dx12 CI_TESTING_CONFIG=$example cargo run --example $example_name --features "bevy_ci_testing" - sleep 10 - done + # - name: Run examples + # shell: bash + # run: | + # for example in .github/example-run/*.ron; do + # example_name=`basename $example .ron` + # echo "running $example_name - "`date` + # time WGPU_BACKEND=dx12 CI_TESTING_CONFIG=$example cargo run --example $example_name --features "bevy_ci_testing" + # sleep 10 + # done - check-doc: - runs-on: ubuntu-latest - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - - uses: actions/cache@v3 - 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 - if: runner.os == 'linux' - - 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-doc: + # runs-on: ubuntu-latest + # timeout-minutes: 30 + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/cache@v3 + # 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 + # if: runner.os == 'linux' + # - 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@v2 - if: ${{ failure() && github.event_name == 'pull_request' }} - with: - name: missing-examples - path: missing-examples/ + # 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@v2 + # 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@v2 - if: ${{ failure() && github.event_name == 'pull_request' }} - with: - name: missing-features - path: missing-features/ + # 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@v2 + # 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@v3 - 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@v2 - if: ${{ failure() && github.event_name == 'pull_request' && steps.check.conclusion == 'failure' }} - with: - name: msrv - path: msrv/ + # msrv: + # runs-on: ubuntu-latest + # timeout-minutes: 30 + # needs: build + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/cache@v3 + # 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@v2 + # 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 \ No newline at end of file + # 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 \ No newline at end of file