2020-08-24 18:16:52 +00:00
|
|
|
name: CI
|
2020-05-29 03:48:18 +00:00
|
|
|
|
|
|
|
on:
|
2023-03-06 06:08:21 +00:00
|
|
|
merge_group:
|
2020-05-29 03:48:18 +00:00
|
|
|
pull_request:
|
2021-02-19 21:15:29 +00:00
|
|
|
push:
|
2023-03-07 21:42:53 +00:00
|
|
|
branches:
|
|
|
|
- main
|
2020-05-29 03:48:18 +00:00
|
|
|
|
|
|
|
env:
|
|
|
|
CARGO_TERM_COLOR: always
|
2024-01-22 19:32:44 +00:00
|
|
|
NIGHTLY_TOOLCHAIN: nightly
|
2020-05-29 03:48:18 +00:00
|
|
|
|
|
|
|
jobs:
|
|
|
|
build:
|
2020-08-26 18:57:35 +00:00
|
|
|
strategy:
|
|
|
|
matrix:
|
2021-01-27 01:11:38 +00:00
|
|
|
os: [windows-latest, ubuntu-latest, macos-latest]
|
2020-08-27 19:24:02 +00:00
|
|
|
runs-on: ${{ matrix.os }}
|
2023-02-01 15:08:31 +00:00
|
|
|
timeout-minutes: 30
|
2020-05-29 03:48:18 +00:00
|
|
|
steps:
|
2023-09-13 19:26:25 +00:00
|
|
|
- uses: actions/checkout@v4
|
2024-01-28 09:59:48 +00:00
|
|
|
- uses: actions/cache@v4
|
2021-07-27 02:01:11 +00:00
|
|
|
with:
|
|
|
|
path: |
|
|
|
|
~/.cargo/bin/
|
|
|
|
~/.cargo/registry/index/
|
|
|
|
~/.cargo/registry/cache/
|
|
|
|
~/.cargo/git/db/
|
|
|
|
target/
|
2022-07-15 22:37:07 +00:00
|
|
|
key: ${{ runner.os }}-cargo-build-stable-${{ hashFiles('**/Cargo.toml') }}
|
2022-10-31 17:36:23 +00:00
|
|
|
- uses: dtolnay/rust-toolchain@stable
|
2021-01-27 01:11:38 +00:00
|
|
|
- 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
|
2022-05-02 19:13:34 +00:00
|
|
|
# See tools/ci/src/main.rs for the commands this runs
|
|
|
|
run: cargo run -p ci -- test
|
2020-08-26 18:57:35 +00:00
|
|
|
env:
|
|
|
|
CARGO_INCREMENTAL: 0
|
|
|
|
RUSTFLAGS: "-C debuginfo=0 -D warnings"
|
|
|
|
|
2021-07-27 02:01:11 +00:00
|
|
|
ci:
|
|
|
|
runs-on: ubuntu-latest
|
2023-02-01 15:08:31 +00:00
|
|
|
timeout-minutes: 30
|
2021-07-27 02:01:11 +00:00
|
|
|
steps:
|
2023-09-13 19:26:25 +00:00
|
|
|
- uses: actions/checkout@v4
|
2024-01-28 09:59:48 +00:00
|
|
|
- uses: actions/cache@v4
|
2021-07-27 02:01:11 +00:00
|
|
|
with:
|
|
|
|
path: |
|
|
|
|
~/.cargo/bin/
|
|
|
|
~/.cargo/registry/index/
|
|
|
|
~/.cargo/registry/cache/
|
|
|
|
~/.cargo/git/db/
|
|
|
|
target/
|
|
|
|
key: ${{ runner.os }}-cargo-ci-${{ hashFiles('**/Cargo.toml') }}
|
2022-10-31 17:36:23 +00:00
|
|
|
- uses: dtolnay/rust-toolchain@stable
|
2021-07-27 02:01:11 +00:00
|
|
|
with:
|
|
|
|
components: rustfmt, clippy
|
|
|
|
- name: Install alsa and udev
|
2021-12-09 20:14:00 +00:00
|
|
|
run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev libwayland-dev libxkbcommon-dev
|
2021-07-27 02:01:11 +00:00
|
|
|
- name: CI job
|
|
|
|
# See tools/ci/src/main.rs for the commands this runs
|
2022-05-02 19:13:34 +00:00
|
|
|
run: cargo run -p ci -- lints
|
2021-07-27 02:01:11 +00:00
|
|
|
|
2022-03-25 00:26:07 +00:00
|
|
|
miri:
|
|
|
|
runs-on: ubuntu-latest
|
2022-05-14 02:01:38 +00:00
|
|
|
timeout-minutes: 60
|
2022-03-25 00:26:07 +00:00
|
|
|
steps:
|
2023-09-13 19:26:25 +00:00
|
|
|
- uses: actions/checkout@v4
|
2024-01-28 09:59:48 +00:00
|
|
|
- uses: actions/cache@v4
|
2022-07-01 13:19:39 +00:00
|
|
|
with:
|
|
|
|
path: |
|
|
|
|
~/.cargo/bin/
|
|
|
|
~/.cargo/registry/index/
|
|
|
|
~/.cargo/registry/cache/
|
|
|
|
~/.cargo/git/db/
|
|
|
|
target/
|
|
|
|
key: ${{ runner.os }}-cargo-miri-${{ hashFiles('**/Cargo.toml') }}
|
2022-10-31 17:36:23 +00:00
|
|
|
- uses: dtolnay/rust-toolchain@master
|
2022-03-25 00:26:07 +00:00
|
|
|
with:
|
2022-07-15 22:37:07 +00:00
|
|
|
toolchain: ${{ env.NIGHTLY_TOOLCHAIN }}
|
2022-03-25 00:26:07 +00:00
|
|
|
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
|
2022-07-06 00:11:24 +00:00
|
|
|
# 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
|
2022-03-25 00:26:07 +00:00
|
|
|
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
|
2022-07-01 13:19:39 +00:00
|
|
|
# https://github.com/rust-lang/miri#miri--z-flags-and-environment-variables
|
2022-03-25 00:26:07 +00:00
|
|
|
# -Zmiri-disable-isolation is needed because our executor uses `fastrand` which accesses system time.
|
2022-07-01 13:19:39 +00:00
|
|
|
# -Zmiri-permissive-provenance disables warnings against int2ptr casts (since those are used by once_cell)
|
2022-07-01 21:54:28 +00:00
|
|
|
# -Zmiri-ignore-leaks is necessary because a bunch of tests don't join all threads before finishing.
|
2022-07-27 16:51:03 +00:00
|
|
|
MIRIFLAGS: -Zmiri-ignore-leaks -Zmiri-disable-isolation -Zmiri-permissive-provenance
|
2022-03-25 00:26:07 +00:00
|
|
|
|
2022-05-02 19:13:34 +00:00
|
|
|
check-compiles:
|
2021-08-26 00:40:56 +00:00
|
|
|
runs-on: ubuntu-latest
|
2023-02-01 15:08:31 +00:00
|
|
|
timeout-minutes: 30
|
2021-08-26 00:40:56 +00:00
|
|
|
needs: ci
|
|
|
|
steps:
|
2023-09-13 19:26:25 +00:00
|
|
|
- uses: actions/checkout@v4
|
2024-01-28 09:59:48 +00:00
|
|
|
- uses: actions/cache@v4
|
2021-08-26 00:40:56 +00:00
|
|
|
with:
|
|
|
|
path: |
|
|
|
|
~/.cargo/bin/
|
|
|
|
~/.cargo/registry/index/
|
|
|
|
~/.cargo/registry/cache/
|
|
|
|
~/.cargo/git/db/
|
|
|
|
target/
|
2022-05-02 19:13:34 +00:00
|
|
|
crates/bevy_ecs_compile_fail_tests/target/
|
2023-01-02 21:07:33 +00:00
|
|
|
crates/bevy_reflect_compile_fail_tests/target/
|
2022-05-02 19:13:34 +00:00
|
|
|
key: ${{ runner.os }}-cargo-check-compiles-${{ hashFiles('**/Cargo.toml') }}
|
2022-10-31 17:36:23 +00:00
|
|
|
- uses: dtolnay/rust-toolchain@stable
|
2021-08-26 00:40:56 +00:00
|
|
|
with:
|
|
|
|
toolchain: stable
|
|
|
|
- name: Install alsa and udev
|
|
|
|
run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev
|
2022-05-02 19:13:34 +00:00
|
|
|
- name: Check Compile
|
|
|
|
# See tools/ci/src/main.rs for the commands this runs
|
|
|
|
run: cargo run -p ci -- compile
|
2021-08-26 00:40:56 +00:00
|
|
|
|
2020-10-22 01:15:14 +00:00
|
|
|
build-wasm:
|
2022-07-15 22:37:07 +00:00
|
|
|
runs-on: ubuntu-latest
|
2023-02-01 15:08:31 +00:00
|
|
|
timeout-minutes: 30
|
2022-05-31 17:30:31 +00:00
|
|
|
needs: build
|
2020-10-22 01:15:14 +00:00
|
|
|
steps:
|
2023-09-13 19:26:25 +00:00
|
|
|
- uses: actions/checkout@v4
|
2024-01-28 09:59:48 +00:00
|
|
|
- uses: actions/cache@v4
|
2021-07-27 02:01:11 +00:00
|
|
|
with:
|
|
|
|
path: |
|
|
|
|
~/.cargo/bin/
|
|
|
|
~/.cargo/registry/index/
|
|
|
|
~/.cargo/registry/cache/
|
|
|
|
~/.cargo/git/db/
|
|
|
|
target/
|
2022-07-15 22:37:07 +00:00
|
|
|
key: ubuntu-assets-cargo-build-wasm-stable-${{ hashFiles('**/Cargo.toml') }}
|
2022-10-31 17:36:23 +00:00
|
|
|
- uses: dtolnay/rust-toolchain@stable
|
2020-10-22 01:15:14 +00:00
|
|
|
with:
|
|
|
|
target: wasm32-unknown-unknown
|
2020-09-21 22:47:38 +00:00
|
|
|
- name: Check wasm
|
2022-10-31 17:36:23 +00:00
|
|
|
run: cargo check --target wasm32-unknown-unknown
|
Webgpu support (#8336)
# Objective
- Support WebGPU
- alternative to #5027 that doesn't need any async / await
- fixes #8315
- Surprise fix #7318
## Solution
### For async renderer initialisation
- Update the plugin lifecycle:
- app builds the plugin
- calls `plugin.build`
- registers the plugin
- app starts the event loop
- event loop waits for `ready` of all registered plugins in the same
order
- returns `true` by default
- then call all `finish` then all `cleanup` in the same order as
registered
- then execute the schedule
In the case of the renderer, to avoid anything async:
- building the renderer plugin creates a detached task that will send
back the initialised renderer through a mutex in a resource
- `ready` will wait for the renderer to be present in the resource
- `finish` will take that renderer and place it in the expected
resources by other plugins
- other plugins (that expect the renderer to be available) `finish` are
called and they are able to set up their pipelines
- `cleanup` is called, only custom one is still for pipeline rendering
### For WebGPU support
- update the `build-wasm-example` script to support passing `--api
webgpu` that will build the example with WebGPU support
- feature for webgl2 was always enabled when building for wasm. it's now
in the default feature list and enabled on all platforms, so check for
this feature must also check that the target_arch is `wasm32`
---
## Migration Guide
- `Plugin::setup` has been renamed `Plugin::cleanup`
- `Plugin::finish` has been added, and plugins adding pipelines should
do it in this function instead of `Plugin::build`
```rust
// Before
impl Plugin for MyPlugin {
fn build(&self, app: &mut App) {
app.insert_resource::<MyResource>
.add_systems(Update, my_system);
let render_app = match app.get_sub_app_mut(RenderApp) {
Ok(render_app) => render_app,
Err(_) => return,
};
render_app
.init_resource::<RenderResourceNeedingDevice>()
.init_resource::<OtherRenderResource>();
}
}
// After
impl Plugin for MyPlugin {
fn build(&self, app: &mut App) {
app.insert_resource::<MyResource>
.add_systems(Update, my_system);
let render_app = match app.get_sub_app_mut(RenderApp) {
Ok(render_app) => render_app,
Err(_) => return,
};
render_app
.init_resource::<OtherRenderResource>();
}
fn finish(&self, app: &mut App) {
let render_app = match app.get_sub_app_mut(RenderApp) {
Ok(render_app) => render_app,
Err(_) => return,
};
render_app
.init_resource::<RenderResourceNeedingDevice>();
}
}
```
2023-05-04 22:07:57 +00:00
|
|
|
env:
|
|
|
|
RUSTFLAGS: --cfg=web_sys_unstable_apis
|
2020-09-21 22:47:38 +00:00
|
|
|
|
2021-02-22 04:50:05 +00:00
|
|
|
markdownlint:
|
|
|
|
runs-on: ubuntu-latest
|
2023-02-01 15:08:31 +00:00
|
|
|
timeout-minutes: 30
|
2023-03-07 21:42:53 +00:00
|
|
|
needs: check-missing-features-in-docs
|
2021-07-27 02:01:11 +00:00
|
|
|
if: always()
|
2021-02-22 04:50:05 +00:00
|
|
|
steps:
|
2023-09-13 19:26:25 +00:00
|
|
|
- uses: actions/checkout@v4
|
2021-02-22 04:50:05 +00:00
|
|
|
with:
|
|
|
|
# Full git history is needed to get a proper list of changed files within `super-linter`
|
|
|
|
fetch-depth: 0
|
|
|
|
- name: Run Markdown Lint
|
2021-06-01 01:01:20 +00:00
|
|
|
uses: docker://ghcr.io/github/super-linter:slim-v4
|
2021-02-22 04:50:05 +00:00
|
|
|
env:
|
2022-07-05 15:49:11 +00:00
|
|
|
MULTI_STATUS: false
|
2021-02-22 04:50:05 +00:00
|
|
|
VALIDATE_ALL_CODEBASE: false
|
|
|
|
VALIDATE_MARKDOWN: true
|
2021-04-15 19:29:47 +00:00
|
|
|
DEFAULT_BRANCH: main
|
2021-04-14 21:40:36 +00:00
|
|
|
|
2023-11-21 01:04:14 +00:00
|
|
|
toml:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
timeout-minutes: 30
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v4
|
2024-02-22 18:13:45 +00:00
|
|
|
- uses: dtolnay/rust-toolchain@stable
|
2023-11-21 01:04:14 +00:00
|
|
|
- name: Install taplo
|
2024-02-22 18:13:45 +00:00
|
|
|
run: cargo install taplo-cli --locked
|
2023-11-21 01:04:14 +00:00
|
|
|
- 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`'
|
2024-02-22 18:13:45 +00:00
|
|
|
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'
|
2023-11-21 01:04:14 +00:00
|
|
|
|
|
|
|
|
2023-08-19 14:47:41 +00:00
|
|
|
run-examples-on-windows-dx12:
|
|
|
|
runs-on: windows-latest
|
|
|
|
timeout-minutes: 60
|
2021-04-14 21:40:36 +00:00
|
|
|
steps:
|
2023-09-13 19:26:25 +00:00
|
|
|
- uses: actions/checkout@v4
|
2023-08-19 14:47:41 +00:00
|
|
|
|
|
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
|
|
|
2024-01-28 09:59:48 +00:00
|
|
|
- uses: actions/cache@v4
|
2021-07-27 02:01:11 +00:00
|
|
|
with:
|
|
|
|
path: |
|
|
|
|
~/.cargo/bin/
|
|
|
|
~/.cargo/registry/index/
|
|
|
|
~/.cargo/registry/cache/
|
|
|
|
~/.cargo/git/db/
|
|
|
|
target/
|
2023-08-19 14:47:41 +00:00
|
|
|
key: ${{ runner.os }}-windows-run-examples-${{ hashFiles('**/Cargo.toml') }}
|
|
|
|
|
2021-04-14 21:40:36 +00:00
|
|
|
- name: Build bevy
|
2023-08-19 14:47:41 +00:00
|
|
|
shell: bash
|
2022-07-17 14:43:35 +00:00
|
|
|
# this uses the same command as when running the example to ensure build is reused
|
2021-04-14 21:40:36 +00:00
|
|
|
run: |
|
2023-08-19 14:47:41 +00:00
|
|
|
WGPU_BACKEND=dx12 CI_TESTING_CONFIG=.github/example-run/alien_cake_addict.ron cargo build --example alien_cake_addict --features "bevy_ci_testing"
|
|
|
|
|
2021-04-14 21:40:36 +00:00
|
|
|
- name: Run examples
|
2023-08-19 14:47:41 +00:00
|
|
|
shell: bash
|
2021-04-14 21:40:36 +00:00
|
|
|
run: |
|
|
|
|
for example in .github/example-run/*.ron; do
|
|
|
|
example_name=`basename $example .ron`
|
|
|
|
echo "running $example_name - "`date`
|
2023-08-19 14:47:41 +00:00
|
|
|
time WGPU_BACKEND=dx12 CI_TESTING_CONFIG=$example cargo run --example $example_name --features "bevy_ci_testing"
|
2021-04-14 21:40:36 +00:00
|
|
|
sleep 10
|
|
|
|
done
|
2021-04-22 19:53:44 +00:00
|
|
|
|
2021-04-27 02:17:12 +00:00
|
|
|
check-doc:
|
2021-04-22 19:53:44 +00:00
|
|
|
runs-on: ubuntu-latest
|
2023-02-01 15:08:31 +00:00
|
|
|
timeout-minutes: 30
|
2021-04-22 19:53:44 +00:00
|
|
|
steps:
|
2023-09-13 19:26:25 +00:00
|
|
|
- uses: actions/checkout@v4
|
2024-01-28 09:59:48 +00:00
|
|
|
- uses: actions/cache@v4
|
2022-05-02 19:13:34 +00:00
|
|
|
with:
|
|
|
|
path: |
|
|
|
|
~/.cargo/bin/
|
|
|
|
~/.cargo/registry/index/
|
|
|
|
~/.cargo/registry/cache/
|
|
|
|
~/.cargo/git/db/
|
|
|
|
target/
|
|
|
|
key: ${{ runner.os }}-check-doc-${{ hashFiles('**/Cargo.toml') }}
|
2022-10-31 17:36:23 +00:00
|
|
|
- uses: dtolnay/rust-toolchain@stable
|
2021-04-22 19:53:44 +00:00
|
|
|
- name: Install alsa and udev
|
2021-12-09 20:14:00 +00:00
|
|
|
run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev libwayland-dev libxkbcommon-dev
|
2021-04-22 19:53:44 +00:00
|
|
|
if: runner.os == 'linux'
|
2021-04-27 02:17:12 +00:00
|
|
|
- name: Build and check doc
|
2022-05-02 19:13:34 +00:00
|
|
|
# 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
|
2021-07-27 02:01:11 +00:00
|
|
|
|
2021-05-30 18:14:58 +00:00
|
|
|
check-missing-examples-in-docs:
|
|
|
|
runs-on: ubuntu-latest
|
2023-02-01 15:08:31 +00:00
|
|
|
timeout-minutes: 30
|
2021-05-30 18:14:58 +00:00
|
|
|
steps:
|
2023-09-13 19:26:25 +00:00
|
|
|
- uses: actions/checkout@v4
|
2023-01-29 17:16:29 +00:00
|
|
|
- name: check for missing metadata
|
|
|
|
id: missing-metadata
|
2023-02-28 14:24:47 +00:00
|
|
|
run: cargo run -p build-templated-pages -- check-missing examples
|
2023-01-29 17:16:29 +00:00
|
|
|
- name: check for missing update
|
2023-02-28 14:24:47 +00:00
|
|
|
run: cargo run -p build-templated-pages -- update examples
|
2022-06-25 20:23:24 +00:00
|
|
|
- name: Check for modified files
|
2023-04-21 22:42:33 +00:00
|
|
|
id: missing-update
|
2022-06-25 20:23:24 +00:00
|
|
|
run: |
|
|
|
|
echo "if this step fails, run the following command and commit the changed file on your PR."
|
2023-02-28 14:24:47 +00:00
|
|
|
echo " > cargo run -p build-templated-pages -- update examples"
|
2022-06-25 20:23:24 +00:00
|
|
|
git diff --quiet HEAD --
|
2023-01-29 17:16:29 +00:00
|
|
|
- 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
|
2023-12-24 00:34:02 +00:00
|
|
|
- uses: actions/upload-artifact@v4
|
2023-01-29 17:16:29 +00:00
|
|
|
if: ${{ failure() && github.event_name == 'pull_request' }}
|
|
|
|
with:
|
|
|
|
name: missing-examples
|
|
|
|
path: missing-examples/
|
2022-07-02 00:55:52 +00:00
|
|
|
|
2023-02-28 14:24:47 +00:00
|
|
|
check-missing-features-in-docs:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
timeout-minutes: 30
|
2023-03-07 21:42:53 +00:00
|
|
|
needs: check-missing-examples-in-docs
|
2023-02-28 14:24:47 +00:00
|
|
|
steps:
|
2023-09-13 19:26:25 +00:00
|
|
|
- uses: actions/checkout@v4
|
2023-02-28 14:24:47 +00:00
|
|
|
- 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
|
2023-04-21 22:42:33 +00:00
|
|
|
id: missing-update
|
2023-02-28 14:24:47 +00:00
|
|
|
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
|
2023-12-24 00:34:02 +00:00
|
|
|
- uses: actions/upload-artifact@v4
|
2023-02-28 14:24:47 +00:00
|
|
|
if: ${{ failure() && github.event_name == 'pull_request' }}
|
|
|
|
with:
|
|
|
|
name: missing-features
|
|
|
|
path: missing-features/
|
|
|
|
|
2023-01-09 21:19:48 +00:00
|
|
|
msrv:
|
|
|
|
runs-on: ubuntu-latest
|
2023-02-01 15:08:31 +00:00
|
|
|
timeout-minutes: 30
|
2023-01-09 21:19:48 +00:00
|
|
|
needs: build
|
|
|
|
steps:
|
2023-09-13 19:26:25 +00:00
|
|
|
- uses: actions/checkout@v4
|
2024-01-28 09:59:48 +00:00
|
|
|
- uses: actions/cache@v4
|
2023-01-09 21:19:48 +00:00
|
|
|
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
|
2023-02-06 22:14:39 +00:00
|
|
|
id: check
|
2023-01-09 21:19:48 +00:00
|
|
|
run: cargo check
|
2023-01-29 17:16:29 +00:00
|
|
|
- name: Save PR number
|
2023-02-06 22:14:39 +00:00
|
|
|
if: ${{ failure() && github.event_name == 'pull_request' && steps.check.conclusion == 'failure' }}
|
2023-01-29 17:16:29 +00:00
|
|
|
run: |
|
|
|
|
mkdir -p ./msrv
|
|
|
|
echo ${{ github.event.number }} > ./msrv/NR
|
2023-12-24 00:34:02 +00:00
|
|
|
- uses: actions/upload-artifact@v4
|
2023-02-06 22:14:39 +00:00
|
|
|
if: ${{ failure() && github.event_name == 'pull_request' && steps.check.conclusion == 'failure' }}
|
2023-01-29 17:16:29 +00:00
|
|
|
with:
|
|
|
|
name: msrv
|
|
|
|
path: msrv/
|
2023-08-29 19:11:06 +00:00
|
|
|
|
|
|
|
check-bevy-internal-imports:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
timeout-minutes: 30
|
|
|
|
steps:
|
2023-09-13 19:26:25 +00:00
|
|
|
- uses: actions/checkout@v4
|
2023-08-29 19:11:06 +00:00
|
|
|
- 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
|
2024-02-25 15:19:27 +00:00
|
|
|
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
|