Split out unit testing CI job #7
This file contains hidden or 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: Build | |
| on: | |
| push: | |
| branches: | |
| - '*' | |
| pull_request: | |
| jobs: | |
| build: | |
| name: Build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| platform: [ | |
| ubuntu-latest, | |
| macos-latest, | |
| windows-latest | |
| ] | |
| target: [ | |
| aarch64-unknown-none-softfloat, | |
| aarch64-unknown-none, | |
| ] | |
| variant: [ | |
| "", # debug | |
| "--release" | |
| ] | |
| runs-on: ${{ matrix.platform }} | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v6 | |
| - name: Install Rustup (macOS) | |
| run: | | |
| curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
| echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
| if: runner.os == 'macOS' | |
| - name: Set Rustup profile to minimal | |
| run: rustup set profile minimal | |
| - name: Install Target Support | |
| run: | | |
| rustup target add ${{ matrix.target }} | |
| - name: Print Rust Version | |
| run: | | |
| rustc -Vv | |
| cargo -Vv | |
| - name: Build Package With All Warnings Denied | |
| run: cargo build ${{ matrix.variant }} --target=${{ matrix.target }} | |
| env: | |
| RUSTFLAGS: "-D warnings" | |
| test: | |
| name: Test | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Install QEMU | |
| run: sudo apt-get update && sudo apt-get install qemu-system-aarch64 | |
| - name: Install just | |
| run: sudo apt-get install just | |
| - name: Install FVP | |
| run: | | |
| mkdir /tmp/fvp | |
| cd /tmp/fvp && curl -LO https://developer.arm.com/-/cdn-downloads/permalink/FVPs-Architecture/FM-11.30/FVP_Base_AEMv8R_11.30_27_Linux64.tgz | |
| cd /tmp/fvp && tar xf FVP_Base_AEMv8R_11.30_27_Linux64.tgz | |
| - name: Run Tests | |
| run: PATH="/tmp/fvp/AEMv8R_base_pkg/models/Linux64_GCC-9.3/:$PATH" just test | |
| check_formatting: | |
| name: Check Formatting | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 2 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - run: cargo fmt -- --check | |
| - run: cd examples/armv8-r && cargo fmt -- --check | |
| clippy: | |
| name: Clippy | |
| # Had to duplicate the supported targets list from above | |
| # @fixme must be a way to specify it just once? | |
| strategy: | |
| matrix: | |
| target: [ | |
| aarch64-unknown-none-softfloat, | |
| aarch64-unknown-none, | |
| ] | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - run: rustup target add ${{ matrix.target }} | |
| - run: cargo clippy --target=${{ matrix.target }} | |
| armv8r-examples: | |
| runs-on: ubuntu-latest | |
| name: Build Armv8-R Examples | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - run: cd examples/armv8-r && cargo build --bins |