Dev #255
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: Rust CI | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
permissions: | |
contents: write | |
jobs: | |
build-and-test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
components: rustfmt, clippy | |
override: true | |
- name: Cache cargo registry | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cargo/registry | |
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-registry- | |
- name: Cache cargo index | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cargo/git | |
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-index- | |
- name: Cache cargo build | |
id: cargo-build-cache | |
uses: actions/cache@v2 | |
with: | |
path: target | |
key: ${{ runner.os }}-cargo-build-${{ hashFiles('./Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-build- | |
- name: Cache Nextest installation | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cargo/bin/cargo-nextest | |
key: ${{ runner.os }}-cargo-nextest | |
- name: Install Nextest if not cached | |
run: | | |
if [ ! -f ~/.cargo/bin/cargo-nextest ]; then | |
cargo install cargo-nextest | |
fi | |
- name: Check no default features | |
run: cargo check --no-default-features | |
- name: Check formatting | |
run: cargo fmt -- --check | |
- name: Lint with Clippy | |
run: cargo clippy --workspace --all-features --bins --tests | |
- name: Build | |
if: steps.cargo-build-cache.outputs.cache-hit != 'true' | |
run: cargo build --release --workspace --all-features --verbose | |
- name: Run tests with Nextest | |
run: cargo nextest run --all-features --workspace --verbose | |
- name: Run docs | |
run: cargo doc --workspace --all-features --no-deps --document-private-items --verbose | |
- name: Cache mdbook installation | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cargo/bin/mdbook | |
key: ${{ runner.os }}-mdbook | |
- name: Cache mdbook-mermaid installation | |
uses: actions/cache@v2 | |
with: | |
path: ~/.cargo/bin/mdbook | |
key: ${{ runner.os }}-mdbook-mermaid | |
- name: Install mdBook if not installed already | |
run: | | |
if [ ! -f ~/.cargo/bin/mdbook ]; then | |
cargo install mdbook | |
fi | |
- name: Install mdBook-mermaid if not installed already | |
run: | | |
if [ ! -f ~/.cargo/bin/mdbook-mermaid ]; then | |
cargo install mdbook-mermaid | |
fi | |
- name: Cache mdBook build | |
id: mdbook-build-cache | |
uses: actions/cache@v3 | |
with: | |
path: ./docs/book/ | |
key: ${{ runner.os }}-mdbook-${{ hashFiles('./docs/**') }} | |
restore-keys: | | |
${{ runner.os }}-mdbook- | |
- name: Build the book | |
if: steps.mdbook-build-cache.outputs.cache-hit != 'true' | |
run: mdbook build ./docs/ | |
- name: Deploy book to GitHub Pages | |
if: github.ref == 'refs/heads/main' # Deploy only when PR is merged to main | |
uses: peaceiris/actions-gh-pages@v3 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: ./docs/book/ |