mirror of
https://github.com/bevyengine/bevy
synced 2024-11-22 12:43:34 +00:00
ffde86efa0
Objective During work on #3009 I've found that not all jobs use actions-rs, and therefore, an previous version of Rust is used for them. So while compilation and other stuff can pass, checking markup and Android build may fail with compilation errors. Solution This PR adds `action-rs` for any job running cargo, and updates the edition to 2021.
310 lines
10 KiB
YAML
310 lines
10 KiB
YAML
name: CI
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches-ignore:
|
|
- 'dependabot/**'
|
|
- staging-squash-merge.tmp
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
matrix:
|
|
toolchain: [stable, nightly]
|
|
os: [windows-latest, ubuntu-latest, macos-latest]
|
|
exclude:
|
|
- os: macos-latest
|
|
toolchain: nightly
|
|
- os: windows-latest
|
|
toolchain: nightly
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: ${{ runner.os }}-cargo-build-${{ matrix.toolchain }}-${{ hashFiles('**/Cargo.toml') }}
|
|
- uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: ${{ matrix.toolchain }}
|
|
override: true
|
|
- 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
|
|
run: cargo test --workspace
|
|
env:
|
|
CARGO_INCREMENTAL: 0
|
|
RUSTFLAGS: "-C debuginfo=0 -D warnings"
|
|
|
|
ci:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: ${{ runner.os }}-cargo-ci-${{ hashFiles('**/Cargo.toml') }}
|
|
- uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
components: rustfmt, clippy
|
|
override: true
|
|
- name: Install alsa and udev
|
|
run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev
|
|
- name: CI job
|
|
# See tools/ci/src/main.rs for the commands this runs
|
|
run: cargo run -p ci
|
|
|
|
check-benches:
|
|
runs-on: ubuntu-latest
|
|
needs: ci
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: ${{ runner.os }}-cargo-check-benches-${{ hashFiles('**/Cargo.toml') }}
|
|
- uses: actions-rs/toolchain@v1
|
|
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
|
|
- name: Check Benches
|
|
run: cd benches && cargo check --benches
|
|
|
|
build-wasm:
|
|
strategy:
|
|
matrix:
|
|
toolchain: [stable, nightly]
|
|
os: [ubuntu-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: ${{ runner.os }}-cargo-build-wasm-${{ matrix.toolchain }}-${{ hashFiles('**/Cargo.toml') }}
|
|
- uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: ${{ matrix.toolchain }}
|
|
target: wasm32-unknown-unknown
|
|
override: true
|
|
- name: Check wasm
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: check
|
|
args: --target wasm32-unknown-unknown --no-default-features --features bevy_winit,x11,hdr,bevy_gltf
|
|
|
|
build-android:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: ${{ runner.os }}-cargo-build-android-${{ hashFiles('**/Cargo.toml') }}
|
|
- name: Uninstall android-31
|
|
run: $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --uninstall "platforms;android-31"
|
|
- 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: cargo apk build --example android
|
|
|
|
markdownlint:
|
|
runs-on: ubuntu-latest
|
|
needs: check-missing-examples-in-docs
|
|
if: always()
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
# Full git history is needed to get a proper list of changed files within `super-linter`
|
|
fetch-depth: 0
|
|
- name: Run Markdown Lint
|
|
uses: docker://ghcr.io/github/super-linter:slim-v4
|
|
env:
|
|
VALIDATE_ALL_CODEBASE: false
|
|
VALIDATE_MARKDOWN: true
|
|
DEFAULT_BRANCH: main
|
|
# Not needed here as only one Linter is used.
|
|
#GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
check-markdown-links:
|
|
runs-on: ubuntu-latest
|
|
needs: markdownlint
|
|
if: always()
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: check dead links
|
|
continue-on-error: true
|
|
id: run1
|
|
uses: gaurav-nelson/github-action-markdown-link-check@9710f0fec812ce0a3b98bef4c9d842fc1f39d976
|
|
with:
|
|
use-quiet-mode: 'yes'
|
|
use-verbose-mode: 'yes'
|
|
config-file: '.github/linters/markdown-link-check.json'
|
|
- name: Sleep for 30 seconds
|
|
if: steps.run1.outcome=='failure'
|
|
run: sleep 30s
|
|
shell: bash
|
|
- name: check dead links (retry)
|
|
continue-on-error: true
|
|
id: run2
|
|
if: steps.run1.outcome=='failure'
|
|
uses: gaurav-nelson/github-action-markdown-link-check@9710f0fec812ce0a3b98bef4c9d842fc1f39d976
|
|
with:
|
|
use-quiet-mode: 'yes'
|
|
use-verbose-mode: 'yes'
|
|
config-file: '.github/linters/markdown-link-check.json'
|
|
- name: Sleep for 30 seconds
|
|
if: steps.run2.outcome=='failure'
|
|
run: sleep 30s
|
|
shell: bash
|
|
- name: check dead links (retry 2)
|
|
continue-on-error: true
|
|
id: run3
|
|
if: steps.run2.outcome=='failure'
|
|
uses: gaurav-nelson/github-action-markdown-link-check@9710f0fec812ce0a3b98bef4c9d842fc1f39d976
|
|
with:
|
|
use-quiet-mode: 'yes'
|
|
use-verbose-mode: 'yes'
|
|
config-file: '.github/linters/markdown-link-check.json'
|
|
- name: set the status
|
|
if: always()
|
|
run: |
|
|
if ${{ steps.run1.outcome=='success' || steps.run2.outcome=='success' || steps.run3.outcome=='success' }}; then
|
|
echo success
|
|
else
|
|
exit 1
|
|
fi
|
|
|
|
run-examples:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update;
|
|
DEBIAN_FRONTEND=noninteractive sudo apt-get install --no-install-recommends -yq \
|
|
libasound2-dev libudev-dev wget unzip xvfb;
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: ${{ runner.os }}-cargo-run-examples-${{ hashFiles('**/Cargo.toml') }}
|
|
- uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
- name: Setup swiftshader
|
|
run: |
|
|
wget https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/swiftshader.zip;
|
|
unzip swiftshader.zip;
|
|
curr="$(pwd)/libvk_swiftshader.so";
|
|
sed -i "s|PATH_TO_CHANGE|$curr|" vk_swiftshader_icd.json;
|
|
- name: Build bevy
|
|
run: |
|
|
cargo build --no-default-features --features "bevy_dynamic_plugin,bevy_gilrs,bevy_gltf,bevy_wgpu,bevy_winit,render,png,hdr,x11,bevy_ci_testing"
|
|
- name: Run examples
|
|
run: |
|
|
for example in .github/example-run/*.ron; do
|
|
example_name=`basename $example .ron`
|
|
echo "running $example_name - "`date`
|
|
time CI_TESTING_CONFIG=$example VK_ICD_FILENAMES=$(pwd)/vk_swiftshader_icd.json DRI_PRIME=0 xvfb-run cargo run --example $example_name --no-default-features --features "bevy_dynamic_plugin,bevy_gilrs,bevy_gltf,bevy_wgpu,bevy_winit,render,png,hdr,x11,bevy_ci_testing"
|
|
sleep 10
|
|
done
|
|
|
|
check-doc:
|
|
runs-on: ubuntu-latest
|
|
needs: check-markdown-links
|
|
if: always()
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
- 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: Installs cargo-deadlinks
|
|
run: cargo install --force cargo-deadlinks
|
|
- name: Build and check doc
|
|
run: RUSTDOCFLAGS='-D warnings' cargo doc --all-features --no-deps
|
|
- name: Checks dead links
|
|
run: cargo deadlinks --dir target/doc/bevy
|
|
continue-on-error: true
|
|
|
|
check-missing-examples-in-docs:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Check that examples are present in both README and Cargo
|
|
uses: Weibye/action-internal-link-consistency@1.0.0
|
|
with:
|
|
source: './examples/'
|
|
targets: '[ "./Cargo.toml", "./examples/README.md" ]'
|
|
file-types: '[".rs"]'
|
|
exclude-folders: '["./examples/ios"]'
|
|
exclude-files: '[]'
|
|
|
|
check-unused-dependencies:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: ${{ runner.os }}-cargo-check-unused-dependencies-${{ hashFiles('**/Cargo.toml') }}
|
|
- uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: nightly
|
|
override: true
|
|
- 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
|