# Objective - Merge the examples on iOS and Android - Make sure they both work from the same code ## Solution - don't create window when not in an active state (from #6830) - exit on suspend on Android (from #6830) - automatically enable dependency feature of bevy_audio on android so that it works out of the box - don't inverse y position of touch events - reuse the same example for both Android and iOS Fixes #4616 Fixes #4103 Fixes #3648 Fixes #3458 Fixes #3249 Fixes #86
		
			
				
	
	
		
			167 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: validation jobs
 | 
						|
 | 
						|
on:
 | 
						|
  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"
 |