|
@@ -0,0 +1,120 @@
|
|
|
+name: CI
|
|
|
+
|
|
|
+on:
|
|
|
+ push:
|
|
|
+ branches: [ "main" ]
|
|
|
+ pull_request:
|
|
|
+ branches: [ "main" ]
|
|
|
+ workflow_dispatch:
|
|
|
+
|
|
|
+env:
|
|
|
+ CARGO_UNSTABLE_SPARSE_REGISTRY: true
|
|
|
+ CARGO_TERM_COLOR: always
|
|
|
+
|
|
|
+jobs:
|
|
|
+ fmt:
|
|
|
+ name: Rustfmt
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ steps:
|
|
|
+ - uses: actions/checkout@v3
|
|
|
+ - uses: actions-rs/toolchain@v1
|
|
|
+ with:
|
|
|
+ profile: minimal
|
|
|
+ toolchain: stable
|
|
|
+ override: true
|
|
|
+ components: rustfmt
|
|
|
+ - name: Cache Dependencies
|
|
|
+ uses: Swatinem/rust-cache@v2
|
|
|
+ - uses: actions-rs/cargo@v1
|
|
|
+ with:
|
|
|
+ command: fmt
|
|
|
+ args: --all -- --check
|
|
|
+
|
|
|
+ check-stable:
|
|
|
+ name: Cargo check (stable)
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ needs: fmt
|
|
|
+ strategy:
|
|
|
+ matrix:
|
|
|
+ TARGET: [riscv64imac-unknown-none-elf, riscv32imac-unknown-none-elf]
|
|
|
+ steps:
|
|
|
+ - uses: actions/checkout@v3
|
|
|
+ - uses: actions-rs/toolchain@v1
|
|
|
+ with:
|
|
|
+ profile: minimal
|
|
|
+ toolchain: stable
|
|
|
+ override: true
|
|
|
+ target: ${{ matrix.TARGET }}
|
|
|
+ - name: Cache Dependencies
|
|
|
+ uses: Swatinem/rust-cache@v2
|
|
|
+ with:
|
|
|
+ key: ${{ matrix.TARGET }}
|
|
|
+ - name: Check (no default features)
|
|
|
+ uses: actions-rs/cargo@v1
|
|
|
+ with:
|
|
|
+ command: check
|
|
|
+ args: --target ${{ matrix.TARGET }} --no-default-features --verbose
|
|
|
+ - name: Check (machine)
|
|
|
+ uses: actions-rs/cargo@v1
|
|
|
+ with:
|
|
|
+ command: check
|
|
|
+ args: --target ${{ matrix.TARGET }} --features "machine" --verbose
|
|
|
+
|
|
|
+ check-nightly:
|
|
|
+ name: Cargo check (nightly)
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ needs: fmt
|
|
|
+ strategy:
|
|
|
+ matrix:
|
|
|
+ TARGET: [riscv64imac-unknown-none-elf, riscv32imac-unknown-none-elf]
|
|
|
+ steps:
|
|
|
+ - uses: actions/checkout@v3
|
|
|
+ - uses: actions-rs/toolchain@v1
|
|
|
+ with:
|
|
|
+ profile: minimal
|
|
|
+ toolchain: nightly
|
|
|
+ override: true
|
|
|
+ target: ${{ matrix.TARGET }}
|
|
|
+ - name: Cache Dependencies
|
|
|
+ uses: Swatinem/rust-cache@v2
|
|
|
+ with:
|
|
|
+ key: ${{ matrix.TARGET }}
|
|
|
+ - name: Check (singleton)
|
|
|
+ uses: actions-rs/cargo@v1
|
|
|
+ with:
|
|
|
+ command: check
|
|
|
+ args: --features "singleton" --target ${{ matrix.TARGET }} --verbose
|
|
|
+ - name: Check (legacy)
|
|
|
+ uses: actions-rs/cargo@v1
|
|
|
+ with:
|
|
|
+ command: check
|
|
|
+ args: --features "legacy" --target ${{ matrix.TARGET }} --verbose
|
|
|
+
|
|
|
+ tests:
|
|
|
+ name: Run tests
|
|
|
+ needs: fmt
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ steps:
|
|
|
+ - uses: actions/checkout@v3
|
|
|
+ - uses: actions-rs/toolchain@v1
|
|
|
+ with:
|
|
|
+ profile: minimal
|
|
|
+ toolchain: stable
|
|
|
+ components: clippy
|
|
|
+ override: true
|
|
|
+ - name: Cache Dependencies
|
|
|
+ uses: Swatinem/rust-cache@v2
|
|
|
+ - name: Clippy
|
|
|
+ uses: actions-rs/cargo@v1
|
|
|
+ with:
|
|
|
+ command: clippy
|
|
|
+ - name: Run tests (no default features)
|
|
|
+ uses: actions-rs/cargo@v1
|
|
|
+ with:
|
|
|
+ command: test
|
|
|
+ args: --no-default-features --verbose
|
|
|
+ - name: Run tests (machine)
|
|
|
+ uses: actions-rs/cargo@v1
|
|
|
+ with:
|
|
|
+ command: test
|
|
|
+ args: --features "machine" --verbose
|