name: build
on:
push:
branches:
- main
- rc
- beta
- alpha
- "[0-9]+.x"
pull_request:
workflow_dispatch:
env:
RUST_VERSION: 1.62.1
RUSTFLAGS: "-D warnings"
RUSTDOCFLAGS: "-D warnings"
jobs:
test-no-feature:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1.0.7
with:
toolchain: ${{ env.RUST_VERSION }}
profile: minimal
override: true
- run: cargo test --workspace --no-default-features
- run: cargo test --workspace
test-all-features:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1.0.7
with:
toolchain: ${{ env.RUST_VERSION }}
profile: minimal
override: true
- run: cargo test --workspace --all-features
- run: cargo test --workspace --all-features -- --ignored
test-2d:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1.0.7
with:
toolchain: ${{ env.RUST_VERSION }}
profile: minimal
override: true
- run: cargo test -p heron_rapier --no-default-features --features 2d
- run: cargo test -p heron_debug --no-default-features --features 2d
- run: cargo test --no-default-features --features 2d
test-3d:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1.0.7
with:
toolchain: ${{ env.RUST_VERSION }}
profile: minimal
override: true
- run: cargo test -p heron_core --no-default-features --features 3d
- run: cargo test -p heron_rapier --no-default-features --features 3d
- run: cargo test -p heron_debug --no-default-features --features 3d
- run: cargo test --no-default-features --features 3d
test-debug-2d:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1.0.7
with:
toolchain: ${{ env.RUST_VERSION }}
profile: minimal
override: true
- run: cargo test --no-default-features --features debug-2d
test-debug-3d:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1.0.7
with:
toolchain: ${{ env.RUST_VERSION }}
profile: minimal
override: true
- run: cargo test --no-default-features --features debug-3d
test-enhanced-determinism:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1.0.7
with:
toolchain: ${{ env.RUST_VERSION }}
profile: minimal
override: true
- run: cargo test -p heron_rapier --no-default-features --features enhanced-determinism
- run: cargo test --no-default-features --features enhanced-determinism
test-collision-from-mesh:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1.0.7
with:
toolchain: ${{ env.RUST_VERSION }}
profile: minimal
override: true
- run: cargo test -p heron_core --no-default-features --features collision-from-mesh
- run: cargo test --no-default-features --features collision-from-mesh
code-style:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install rust toolchain
uses: actions-rs/toolchain@v1.0.7
with:
toolchain: ${{ env.RUST_VERSION }}
override: true
components: clippy, rustfmt
- run: cargo fmt --all -- --check
- run: cargo clippy --all-features --workspace
documentation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install rust toolchain
uses: actions-rs/toolchain@v1.0.7
with:
toolchain: stable
override: true
components: clippy, rustfmt
- run: cargo doc --all-features --no-deps --workspace
unwanted-dependencies:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1.0.7
with:
toolchain: stable
override: true
profile: minimal
- run: cargo install cargo-deny --locked
- run: cargo deny check
release:
if: ${{ github.event_name != 'pull_request' }}
needs:
- test-no-feature
- test-all-features
- test-2d
- test-3d
- test-debug-2d
- test-debug-3d
- test-enhanced-determinism
- test-collision-from-mesh
- documentation
environment: release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
profile: minimal
- run: npm install --no-save conventional-changelog-conventionalcommits @semantic-release/exec
- run: npx semantic-release
env:
GITHUB_TOKEN: ${{ github.token }}
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}