ci #2528
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: ci | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - master | |
| schedule: | |
| - cron: '00 01 * * *' | |
| jobs: | |
| test: | |
| name: test | |
| env: | |
| # For some builds, we use cross to test on 32-bit and big-endian | |
| # systems. | |
| CARGO: cargo | |
| # When CARGO is set to CROSS, TARGET is set to `--target matrix.target`. | |
| TARGET: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build: | |
| - pinned | |
| - stable | |
| - stable-32 | |
| - big-endian | |
| - beta | |
| - nightly | |
| - macos | |
| - win-msvc | |
| - win-gnu | |
| include: | |
| - build: pinned | |
| os: ubuntu-latest | |
| rust: 1.80.0 | |
| - build: stable | |
| os: ubuntu-latest | |
| rust: stable | |
| - build: stable-32 | |
| os: ubuntu-latest | |
| rust: stable | |
| target: i686-unknown-linux-gnu | |
| - build: big-endian | |
| os: ubuntu-latest | |
| rust: stable | |
| target: powerpc64-unknown-linux-gnu | |
| - build: beta | |
| os: ubuntu-latest | |
| rust: beta | |
| - build: nightly | |
| os: ubuntu-latest | |
| rust: nightly | |
| - build: macos | |
| os: macos-latest | |
| rust: stable | |
| - build: win-msvc | |
| os: windows-latest | |
| rust: stable | |
| - build: win-gnu | |
| os: windows-latest | |
| rust: stable-x86_64-gnu | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: ${{ matrix.rust }} | |
| - name: Use Cross | |
| if: matrix.target != '' | |
| run: | | |
| cargo install cross | |
| echo "CARGO=cross" >> $GITHUB_ENV | |
| echo "TARGET=--target ${{ matrix.target }}" >> $GITHUB_ENV | |
| - name: Build | |
| run: ${{ env.CARGO }} build --verbose $TARGET | |
| - name: Build docs | |
| run: ${{ env.CARGO }} doc --verbose $TARGET | |
| - name: Tests | |
| if: matrix.build != 'pinned' | |
| run: ${{ env.CARGO }} test --verbose $TARGET | |
| - name: Test benchmark (criterion) | |
| if: matrix.build == 'stable' | |
| run: cargo bench --bench bench_boxcars -- --test | |
| - name: Compile benchmark (gungraun) | |
| if: matrix.build == 'stable' | |
| run: cargo bench --bench bench_boxcars_gungraun --no-run | |
| - name: Compile fuzz | |
| if: matrix.build == 'nightly' | |
| run: | | |
| cargo install cargo-fuzz | |
| cargo fuzz build crc-body | |
| cargo fuzz build no-crc-body | |
| cargo fuzz build crc-no-body | |
| cargo fuzz build no-crc-no-body | |
| clippy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: stable | |
| components: clippy | |
| - name: Run clippy | |
| run: cargo clippy --all-targets --all-features -- -D warnings | |
| rustfmt: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: stable | |
| components: rustfmt | |
| - name: Check formatting | |
| run: | | |
| cargo fmt --all -- --check |