Bump version #235
This file contains 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: | |
push: | |
branches: [main] | |
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
checks: write | |
jobs: | |
ci: | |
name: CI | |
needs: [test, clippy, docs] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Done | |
run: exit 0 | |
test: | |
name: Tests | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
rust: [1.76.0, nightly] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ matrix.rust }} | |
override: true | |
- name: Ready cache | |
if: matrix.os == 'ubuntu-latest' | |
run: sudo chown -R $(whoami):$(id -ng) ~/.cargo/ | |
- name: Install dependencies | |
run: sudo apt-get update; sudo apt-get install --no-install-recommends libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libudev-dev | |
- name: Cache cargo | |
uses: actions/cache@v1 | |
id: cache | |
with: | |
path: ~/.cargo | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Test | |
run: cargo test --verbose -- --nocapture | |
fmt: | |
name: Rustfmt | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
components: rustfmt | |
- name: Run fmt --all -- --check | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
components: clippy | |
- name: Install dependencies | |
run: sudo apt-get update; sudo apt-get install --no-install-recommends libudev-dev | |
- name: Cache cargo | |
uses: actions/cache@v1 | |
id: cache | |
with: | |
path: ~/.cargo | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Run clippy --all-targets -- | |
uses: actions-rs/clippy-check@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
args: --workspace --all-targets -- | |
docs: | |
name: Docs | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: 1.76.0 | |
override: true | |
- name: Install dependencies | |
run: sudo apt-get update; sudo apt-get install --no-install-recommends libudev-dev | |
- name: Cache cargo | |
uses: actions/cache@v1 | |
id: cache | |
with: | |
path: ~/.cargo | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Run doc tests | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: --doc | |
- name: Get package names | |
id: get-package-names | |
run: |- | |
echo "PACKAGE_NAMES=$( | |
cargo metadata --no-deps --format-version=1 \ | |
| jq '.packages[].name' -r \ | |
| sort -u \ | |
| xargs -L1 echo --package \ | |
| paste -sd ' ' | |
)" >> "$GITHUB_OUTPUT" | |
- name: Get features for docs | |
id: get-features-for-docs | |
run: |- | |
echo "FEATURES_FOR_DOCS=$( | |
cargo metadata --no-deps --format-version=1 \ | |
| jq '.packages[].metadata.docs.rs.features | select(.) | .[]' -r \ | |
| sort -u \ | |
| xargs -L1 echo --features \ | |
| paste -sd ' ' | |
)" >> "$GITHUB_OUTPUT" | |
- name: Check docs | |
uses: actions-rs/cargo@v1 | |
with: | |
command: doc | |
args: --no-deps ${{ steps.get-package-names.outputs.PACKAGE_NAMES }} | |
docs-and-demos-ghpages: | |
name: Update Docs and Demos in GitHub Pages | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: jetli/[email protected] | |
with: | |
version: 'latest' | |
- uses: actions-rs/toolchain@v1 | |
with: | |
target: wasm32-unknown-unknown | |
toolchain: 1.76.0 | |
override: true | |
- name: Get package names | |
id: get-package-names | |
run: |- | |
echo "PACKAGE_NAMES=$( | |
cargo metadata --no-deps --format-version=1 \ | |
| jq '.packages[].name | select(. != "tnua-demos-crate")' -r \ | |
| sort -u \ | |
| xargs -L1 echo --package \ | |
| paste -sd ' ' | |
)" >> "$GITHUB_OUTPUT" | |
- name: Get features for docs | |
id: get-features-for-docs | |
run: |- | |
echo "FEATURES_FOR_DOCS=$( | |
cargo metadata --no-deps --format-version=1 \ | |
| jq '.packages[].metadata.docs.rs.features | select(.) | .[]' -r \ | |
| sort -u \ | |
| xargs -L1 echo --features \ | |
| paste -sd ' ' | |
)" >> "$GITHUB_OUTPUT" | |
- name: Build docs and demos | |
env: | |
GITHUB_REPO: ${{ github.repository }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: |- | |
set -ex | |
cargo doc --verbose ${{ steps.get-package-names.outputs.PACKAGE_NAMES }} | |
echo "<meta http-equiv=refresh content=0;url=bevy_tnua/index.html>" > target/doc/index.html | |
function build_for_backend () { | |
physics_backend=$1 | |
if [ -z ${2+x} ]; then | |
demo_suffix=$physics_backend | |
else | |
demo_suffix=$physics_backend-$2 | |
fi | |
special_flags=${@:3} | |
cargo build \ | |
--package tnua-demos-crate \ | |
--bins \ | |
--release \ | |
$special_flags \ | |
--features ${physics_backend}2d \ | |
--features ${physics_backend}3d \ | |
--features bevy/webgl2 \ | |
--target wasm32-unknown-unknown | |
for demowasm in $(cd target/wasm32-unknown-unknown/release; ls *.wasm | grep -v -); do | |
variant=${demowasm%.*}-$demo_suffix | |
wasm-bindgen target/wasm32-unknown-unknown/release/$demowasm --out-dir target/doc/demos/ --out-name $variant --target web | |
cat > target/doc/demos/$variant.html <<EOF | |
<html lang="en-us"> | |
<head> | |
<script type="module"> | |
import init from './$variant.js'; | |
var res = await init(); | |
res.start(); | |
</script> | |
</head> | |
<body> | |
<script> | |
document.body.addEventListener("contextmenu", (e) => { | |
e.preventDefault(); | |
e.stopPropagation(); | |
}); | |
</script> | |
</body> | |
</html> | |
EOF | |
done | |
} | |
build_for_backend rapier | |
build_for_backend xpbd | |
build_for_backend xpbd 64 --no-default-features --features egui --features f64 | |
cp -R demos/assets/ target/doc/demos/ | |
- name: Add read permissions | |
run: |- | |
chmod --recursive +r target/doc | |
- name: Upload artifact | |
uses: actions/upload-pages-artifact@v1 | |
with: | |
path: target/doc | |
deploy-ghpages: | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
runs-on: ubuntu-latest | |
needs: docs-and-demos-ghpages | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v2 |