name: validation jobs on: merge_group: push: branches: - staging - trying - main env: CARGO_TERM_COLOR: always jobs: build-and-install-on-iOS: runs-on: macos-latest timeout-minutes: 30 steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable - uses: actions/cache@v3 with: path: | target key: ${{ runner.os }}-ios-install-${{ matrix.toolchain }}-${{ hashFiles('**/Cargo.lock') }} - name: Add iOS targets run: rustup target add aarch64-apple-ios x86_64-apple-ios - name: Build and install iOS app in iOS Simulator. run: cd examples/mobile && make install build-android: runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v3 - 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 }}-cargo-build-android-${{ hashFiles('**/Cargo.toml') }} - name: Install Android targets run: rustup target add aarch64-linux-android armv7-linux-androideabi - name: Install Cargo APK run: cargo install --force cargo-apk - name: Build APK run: ANDROID_NDK_ROOT=$ANDROID_NDK_LATEST_HOME cargo apk build --package bevy_mobile_example run-examples-on-windows-dx12: runs-on: windows-latest timeout-minutes: 60 steps: - uses: actions/checkout@v3 - 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') }} - 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 run-examples-on-wasm: runs-on: ubuntu-latest timeout-minutes: 60 steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable with: target: wasm32-unknown-unknown - uses: actions/cache@v3 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ ~/.github/start-wasm-example/node_modules target/ key: ${{ runner.os }}-wasm-run-examples-${{ hashFiles('**/Cargo.toml') }} - 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 - name: Install wasm-bindgen run: cargo install --force wasm-bindgen-cli - name: Setup playwright run: | cd .github/start-wasm-example npm install npx playwright install --with-deps cd ../.. - name: First WASM build run: | cargo build --release --example ui --target wasm32-unknown-unknown - name: Run examples shell: bash run: | # start a webserver python3 -m http.server --directory examples/wasm & xvfb-run cargo run -p build-wasm-example -- --browsers chromium --browsers firefox --frames 25 --test 2d_shapes lighting text_debug breakout - name: Save screenshots uses: actions/upload-artifact@v3 with: name: screenshots path: .github/start-wasm-example/screenshot-*.png build-without-default-features: timeout-minutes: 30 strategy: matrix: crate: [bevy_ecs, bevy_reflect, bevy] runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - 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 - name: Build run: cargo build -p ${{ matrix.crate }} --no-default-features env: CARGO_INCREMENTAL: 0 RUSTFLAGS: "-C debuginfo=0 -D warnings"