
Closes #1581 # Internal File/Link Consistency checker Action This pull request adds an action to the CI that parses the [`./examples`](https://github.com/bevyengine/bevy/tree/main/examples) folder for files and cross references that with the links listed in [`README.md`](https://github.com/bevyengine/bevy/blob/main/examples/README.md) and [`Cargo.toml`](https://github.com/bevyengine/bevy/blob/main/Cargo.toml) to ensure the documentation actually reflects the examples currently in the repo. The primary reason for why we want this, is to prevent people from adding new examples but forgetting to also list them in the docs, or accidentally entering broken links (typos in docs). For details on how the action is working: [Check out the README here](https://github.com/Weibye/action-internal-link-consistency/blob/main/README.md) Co-authored-by: Andreas Weibye <13300393+Weibye@users.noreply.github.com>
168 lines
5.2 KiB
YAML
168 lines
5.2 KiB
YAML
name: CI
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
|
|
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-rs/toolchain@v1
|
|
with:
|
|
toolchain: ${{ matrix.toolchain }}
|
|
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
|
|
if: runner.os == 'linux'
|
|
|
|
- name: Check the format
|
|
# See tools/ci/src/main.rs for the commands this runs
|
|
run: cargo run -p ci
|
|
if: runner.os == 'linux' && matrix.toolchain == 'stable'
|
|
|
|
- name: Build & run tests
|
|
run: cargo test --workspace
|
|
env:
|
|
CARGO_INCREMENTAL: 0
|
|
RUSTFLAGS: "-C debuginfo=0 -D warnings"
|
|
|
|
build-wasm:
|
|
strategy:
|
|
matrix:
|
|
toolchain: [stable, nightly]
|
|
os: [ubuntu-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- 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
|
|
- name: Install Android targets
|
|
run: rustup target add aarch64-linux-android armv7-linux-androideabi
|
|
- name: Install Cargo APK
|
|
run: cargo install cargo-apk
|
|
- name: Build APK
|
|
run: cargo apk build --example android
|
|
|
|
markdownlint:
|
|
runs-on: ubuntu-latest
|
|
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: github/super-linter@v3
|
|
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
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: gaurav-nelson/github-action-markdown-link-check@0fe4911067fa322422f325b002d2038ba5602170
|
|
with:
|
|
use-quiet-mode: 'yes'
|
|
use-verbose-mode: 'yes'
|
|
config-file: '.github/linters/markdown-link-check.json'
|
|
|
|
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-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
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- 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 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: '[]'
|