on: [push, pull_request] name: CI jobs: checks: name: ${{ matrix.name }} (${{ matrix.target }}) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: target: - x86_64-unknown-linux-gnu - x86_64-unknown-freebsd - aarch64-linux-android - x86_64-pc-windows-gnu - x86_64-apple-darwin include: - os: ubuntu-latest name: Linux x86_64 target: x86_64-unknown-linux-gnu cross: false strip: true - os: ubuntu-latest name: FreeBSD target: x86_64-unknown-freebsd cross: true strip: true - os: ubuntu-latest name: Android target: aarch64-linux-android cross: true strip: true - os: windows-latest name: Windows x86_64 target: x86_64-pc-windows-gnu cross: false strip: true - os: macos-latest name: macOS x86_64 target: x86_64-apple-darwin cross: false strip: true steps: - name: Checkout uses: actions/checkout@v2 - name: Bootstrap uses: actions-rs/toolchain@v1 with: toolchain: stable components: rustfmt, clippy target: ${{ matrix.target }} - name: Formatting uses: actions-rs/cargo@v1 with: command: fmt use-cross: ${{ matrix.cross }} continue-on-error: false - name: Lints uses: actions-rs/cargo@v1 with: command: clippy args: --target=${{ matrix.target }} -- --no-deps -D clippy::all use-cross: ${{ matrix.cross }} continue-on-error: false - name: Build uses: actions-rs/cargo@v1 with: command: build args: --target=${{ matrix.target }} use-cross: ${{ matrix.cross }} - name: Test uses: actions-rs/cargo@v1 with: command: test args: --target=${{ matrix.target }} if: ${{ !matrix.cross }}