name: CI on: push: pull_request: branches: [ master ] env: CARGO_TERM_COLOR: always jobs: style: name: Check style runs-on: ubuntu-latest steps: - name: Checkout the repo uses: actions/checkout@v2 - name: Install rust uses: actions-rs/toolchain@v1 with: toolchain: stable components: rustfmt profile: minimal override: true - name: Cargo fmt uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check clippy: name: Run clippy needs: [style] runs-on: ubuntu-latest steps: - name: Checkout the repo uses: actions/checkout@v2 - name: Install rust uses: actions-rs/toolchain@v1 with: toolchain: stable components: clippy profile: minimal override: true - name: Clippy uses: actions-rs/cargo@v1 with: command: clippy args: --all-targets -- -D warnings test: name: ${{ matrix.name }} needs: [clippy] runs-on: ${{ matrix.os || 'ubuntu-latest' }} strategy: matrix: name: - linux / stable - linux / beta - macOS / stable - windows / stable-x86_64-msvc include: - name: linux / stable - name: linux / beta rust: beta - name: macOS / stable os: macOS-latest - name: windows / stable-x86_64-msvc os: windows-latest target: x86_64-pc-windows-msvc steps: - name: Checkout uses: actions/checkout@v1 - name: Install rust uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.rust || 'stable' }} target: ${{ matrix.target }} profile: minimal override: true - name: Build uses: actions-rs/cargo@v1 with: command: build - name: Test uses: actions-rs/cargo@v1 with: command: test