name: Test and Build Rust on: push: pull_request: jobs: test: name: Test ${{ matrix.os }} ${{ matrix.toolchain }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - os: ubuntu-latest toolchain: stable - os: macOS-latest toolchain: stable - os: ubuntu-latest toolchain: nightly # - os: ubuntu-latest # toolchain: 1.41.1 # Debian 10 Buster - os: ubuntu-latest toolchain: 1.47.0 # Alpine 3.13 - os: ubuntu-latest toolchain: 1.48.0 # Debian 11 Bullseye steps: - uses: actions/checkout@v2 - name: Setup Rust uses: actions-rs/toolchain@v1 with: components: clippy override: true profile: minimal toolchain: ${{ matrix.toolchain }} - name: Run clippy uses: actions-rs/cargo@v1 with: command: clippy args: --verbose --all-targets --all-features -- -D clippy::all -D clippy::pedantic - name: Run tests uses: actions-rs/cargo@v1 with: command: test args: --verbose --all-features release: name: Release ${{ matrix.triple }} runs-on: ${{ matrix.os }} needs: test strategy: fail-fast: false matrix: include: - os: ubuntu-latest triple: x86_64-unknown-linux-gnu - os: ubuntu-latest triple: arm-unknown-linux-gnueabihf - os: ubuntu-latest triple: armv7-unknown-linux-gnueabihf - os: ubuntu-latest triple: aarch64-unknown-linux-gnu - os: macOS-latest triple: x86_64-apple-darwin - os: macOS-latest triple: aarch64-apple-darwin steps: - uses: actions/checkout@v2 - name: Setup Rust uses: actions-rs/toolchain@v1 with: override: true profile: minimal target: ${{ matrix.triple }} toolchain: stable - name: Build release uses: actions-rs/cargo@v1 env: # TODO: Remove this once it's the default SDKROOT: /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk with: command: build args: --release --verbose --target ${{ matrix.triple }} use-cross: ${{ runner.os == 'Linux' && matrix.triple != 'x86_64-unknown-linux-gnu' }}