2020-08-24 18:16:52 +00:00
name : CI
2020-05-29 03:48:18 +00:00
on :
pull_request :
2021-02-19 21:15:29 +00:00
push :
2021-06-22 07:59:37 +00:00
branches-ignore :
- 'dependabot/**'
- staging-squash-merge.tmp
2020-05-29 03:48:18 +00:00
env :
CARGO_TERM_COLOR : always
2022-12-11 18:22:11 +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 }}
2020-05-29 03:48:18 +00:00
steps :
2022-03-08 00:46:07 +00:00
- uses : actions/checkout@v3
2022-03-31 21:22:16 +00:00
- uses : actions/cache@v3
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
steps :
2022-03-08 00:46:07 +00:00
- uses : actions/checkout@v3
2022-03-31 21:22:16 +00:00
- uses : actions/cache@v3
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 :
- uses : actions/checkout@v3
2022-07-01 13:19:39 +00:00
- 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') }}
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
needs : ci
steps :
2022-03-08 00:46:07 +00:00
- uses : actions/checkout@v3
2022-03-31 21:22:16 +00:00
- uses : actions/cache@v3
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/
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
override : true
- 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
2022-05-31 17:30:31 +00:00
needs : build
2020-10-22 01:15:14 +00:00
steps :
2022-03-08 00:46:07 +00:00
- uses : actions/checkout@v3
2022-03-31 21:22:16 +00:00
- uses : actions/cache@v3
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
2020-09-21 22:47:38 +00:00
2021-02-22 04:50:05 +00:00
markdownlint :
runs-on : ubuntu-latest
2022-06-25 20:23:24 +00:00
needs : check-examples-readme-update-needed
2021-07-27 02:01:11 +00:00
if : always()
2021-02-22 04:50:05 +00:00
steps :
2022-03-08 00:46:07 +00:00
- uses : actions/checkout@v3
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-02-22 04:50:05 +00:00
# Not needed here as only one Linter is used.
#GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2021-04-14 21:40:36 +00:00
run-examples :
2022-12-08 20:05:27 +00:00
runs-on : ubuntu-latest
2022-05-31 17:30:31 +00:00
timeout-minutes : 30
2021-04-14 21:40:36 +00:00
steps :
2021-12-17 23:58:09 +00:00
- name : Install Bevy dependencies
2021-04-14 21:40:36 +00:00
run : |
sudo apt-get update;
DEBIAN_FRONTEND=noninteractive sudo apt-get install --no-install-recommends -yq \
2021-12-17 23:58:09 +00:00
libasound2-dev libudev-dev;
- name : install xvfb, llvmpipe and lavapipe
run : |
sudo apt-get update -y -qq
sudo add-apt-repository ppa:oibaf/graphics-drivers -y
sudo apt-get update
sudo apt install -y xvfb libegl1-mesa libgl1-mesa-dri libxcb-xfixes0-dev mesa-vulkan-drivers
2022-03-08 00:46:07 +00:00
- uses : actions/checkout@v3
2022-03-31 21:22:16 +00:00
- uses : actions/cache@v3
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-run-examples-${{ hashFiles('**/Cargo.toml') }}
2022-10-31 17:36:23 +00:00
- uses : dtolnay/rust-toolchain@stable
2021-04-14 21:40:36 +00:00
- name : Build bevy
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 : |
2022-07-17 14:43:35 +00:00
TRACE_CHROME=trace-alien_cake_addict.json CI_TESTING_CONFIG=.github/example-run/alien_cake_addict.ron cargo build --example alien_cake_addict --features "bevy_ci_testing,trace,trace_chrome"
2021-04-14 21:40:36 +00:00
- name : Run examples
run : |
for example in .github/example-run/*.ron; do
example_name=`basename $example .ron`
echo "running $example_name - "`date`
2022-05-31 17:30:31 +00:00
time TRACE_CHROME=trace-$example_name.json CI_TESTING_CONFIG=$example xvfb-run cargo run --example $example_name --features "bevy_ci_testing,trace,trace_chrome"
2021-04-14 21:40:36 +00:00
sleep 10
done
2021-12-17 23:58:09 +00:00
zip traces.zip trace*.json
- name : save traces
2022-03-08 00:46:06 +00:00
uses : actions/upload-artifact@v3
2021-12-17 23:58:09 +00:00
with :
name : example-traces.zip
path : traces.zip
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
steps :
2022-03-08 00:46:07 +00:00
- uses : actions/checkout@v3
2022-05-02 19:13:34 +00:00
- uses : actions/cache@v2
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
steps :
2022-03-08 00:46:07 +00:00
- uses : actions/checkout@v3
2022-06-25 20:23:24 +00:00
- run : cargo run -p build-example-pages -- check-missing
check-examples-readme-update-needed :
needs : check-missing-examples-in-docs
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v3
- run : cargo run -p build-example-pages -- update
- name : Check for modified files
run : |
echo "if this step fails, run the following command and commit the changed file on your PR."
echo " > cargo run -p build-example-pages -- update"
git diff --quiet HEAD --
2022-07-02 00:55:52 +00:00
check-unused-dependencies :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v3
- uses : actions/cache@v3
with :
path : |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key : ${{ runner.os }}-cargo-check-unused-dependencies-${{ hashFiles('**/Cargo.toml') }}
2022-10-31 17:36:23 +00:00
- uses : dtolnay/rust-toolchain@master
2022-07-02 00:55:52 +00:00
with :
2022-07-15 22:37:07 +00:00
toolchain : ${{ env.NIGHTLY_TOOLCHAIN }}
2022-07-02 00:55:52 +00:00
- name : Installs cargo-udeps
run : cargo install --force cargo-udeps
- name : Install alsa and udev
run : sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev
- name : Run cargo udeps
run : cargo udeps