CI #5784
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| pull_request: | |
| merge_group: | |
| push: | |
| branches: | |
| - 'staging' | |
| - 'trying' | |
| concurrency: | |
| # Only the same workflows on the same branch can cancel each other. | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| # Only cancel runs in a PR; we don't want to cancel commit checks on main. | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| jobs: | |
| mega-linter: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| # Full git history is needed to get a proper list of changed files within `mega-linter` | |
| fetch-depth: 0 | |
| - name: Run Mega Linter | |
| uses: oxsecurity/megalinter/flavors/javascript@v7 | |
| env: | |
| VALIDATE_ALL_CODEBASE: false | |
| DEFAULT_BRANCH: main | |
| check-hide-lines: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Check hide-lines | |
| run: cd write-rustdoc-hide-lines && cargo run --release -- check ../content | |
| lint-tools: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt, clippy | |
| - name: Install alsa, udev and libwayland | |
| run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev libwayland-dev | |
| - name: Check formatting | |
| run: cargo fmt --check --all | |
| - name: Check clippy | |
| run: cargo clippy --all-targets -- -Dwarnings | |
| test-crates: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| target/ | |
| key: ${{ runner.os }}-test-crates-${{ hashFiles('**/Cargo.toml') }} | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Install alsa, udev and libwayland | |
| run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev libwayland-dev | |
| # Some tests assume the generate-errors/bevy/errors folder exists | |
| - name: Checkout errors | |
| run: generate-errors/download_errors.sh | |
| - name: Run tests | |
| run: cargo test | |
| typos: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Check for typos | |
| uses: crate-ci/[email protected] | |
| - name: Typos info | |
| if: failure() | |
| run: | | |
| echo 'To fix typos, please run `typos -w`' | |
| echo 'To check for a diff, run `typos`' | |
| echo 'You can find typos here: https://crates.io/crates/typos' | |
| echo 'if you use VSCode, you can also install `Typos Spell Checker' | |
| echo 'You can find the extension here: https://marketplace.visualstudio.com/items?itemName=tekumara.typos-vscode' | |
| generate-assets: | |
| needs: [mega-linter, lint-tools, check-hide-lines, typos] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Get current date | |
| id: date | |
| run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT | |
| # Uses the generate-assets cache, which is updated in deploy.yml | |
| - name: Restore cached assets | |
| # Do not use cache when in merge queue | |
| if: ${{ github.event_name != 'merge_group' }} | |
| id: restore-cached-assets | |
| uses: actions/cache/restore@v4 | |
| with: | |
| # Must be kept in sync with deploy.yml | |
| path: content/assets | |
| key: assets-${{ steps.date.outputs.date }}-${{ hashFiles('generate-assets/**/*.rs', 'generate-assets/Cargo.toml', 'generate-assets/generate_assets.sh') }} | |
| - name: "Build Bevy Assets" | |
| # Only run if in merge queue or if no cache was found. `cache-hit` is a string, so we | |
| # cannot use normal boolean operators on it, as `!'false' == true`. | |
| if: ${{ github.event_name == 'merge_group' || steps.restore-cached-assets.outputs.cache-hit != 'true' }} | |
| working-directory: generate-assets | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: ./generate_assets.sh | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: generated-assets | |
| path: content/assets | |
| retention-days: 1 | |
| generate-errors: | |
| needs: [mega-linter, lint-tools, check-hide-lines, typos] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| generate-errors/target/ | |
| key: ${{ runner.os }}-generate-errors-${{ hashFiles('generate-errors/Cargo.toml') }} | |
| - name: "Build Bevy Error Codes" | |
| run: > | |
| cd generate-errors && | |
| ./generate_errors.sh | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: generated-errors | |
| path: content/learn/errors | |
| retention-days: 1 | |
| generate-wasm-examples: | |
| needs: [mega-linter, lint-tools, check-hide-lines, typos] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| target: wasm32-unknown-unknown | |
| - name: "Build Bevy Examples" | |
| run: | | |
| cd generate-wasm-examples && | |
| ./generate_wasm_examples.sh | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: generated-wasm-examples | |
| path: content/examples | |
| retention-days: 1 | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: generated-wasm-examples-webgpu | |
| path: content/examples-webgpu | |
| retention-days: 1 | |
| generate-community: | |
| needs: [mega-linter, lint-tools, check-hide-lines, typos] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| generate-community/target/ | |
| key: ${{ runner.os }}-generate-community-${{ hashFiles('generate-community/Cargo.toml') }} | |
| - name: "Build Bevy Community" | |
| run: > | |
| cd generate-community && | |
| ./generate_community.sh | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: generated-community | |
| path: content/community/people | |
| retention-days: 1 | |
| build-website: | |
| runs-on: ubuntu-latest | |
| needs: [mega-linter, lint-tools, check-hide-lines, typos, generate-assets, generate-errors, generate-wasm-examples, generate-community, test-crates] | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Checkout Bevy repo for asset access | |
| uses: actions/checkout@v5 | |
| with: | |
| repository: 'bevyengine/bevy' | |
| ref: 'latest' | |
| path: 'bevy' | |
| - name: Move Bevy assets to static files | |
| # during the real build, this is handled by the generate_wasm_examples.sh script. | |
| run: mv bevy/assets static/assets/examples/ | |
| - uses: actions/download-artifact@v6 | |
| with: | |
| name: generated-assets | |
| path: content/assets | |
| - uses: actions/download-artifact@v6 | |
| with: | |
| name: generated-errors | |
| path: content/learn/errors | |
| - uses: actions/download-artifact@v6 | |
| with: | |
| name: generated-wasm-examples | |
| path: content/examples | |
| - uses: actions/download-artifact@v6 | |
| with: | |
| name: generated-wasm-examples-webgpu | |
| path: content/examples-webgpu | |
| - uses: actions/download-artifact@v6 | |
| with: | |
| name: generated-community | |
| path: content/community/people | |
| - name: "Build website" | |
| uses: shalzz/[email protected] | |
| env: | |
| PAGES_BRANCH: gh-pages | |
| BUILD_DIR: . | |
| BUILD_ONLY: true | |
| TOKEN: fake-secret |