name: Rust CI on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest strategy: matrix: rust: ["1.74.0", stable, beta, nightly] steps: - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@nightly if: ${{ matrix.rust == '1.74.0' }} - name: Generate Cargo.lock with minimal-version dependencies if: ${{ matrix.rust == '1.74.0' }} run: cargo -Zminimal-versions generate-lockfile - uses: dtolnay/rust-toolchain@v1 with: toolchain: ${{ matrix.rust }} - name: Cache Cargo Dependencies uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: build run: cargo build -v - name: test if: ${{ matrix.rust != '1.74.0' }} run: cargo test -v && cargo doc -v features: runs-on: ubuntu-latest strategy: matrix: feature: ["", deflate, jpeg, lzw, zstd, default, "default,zstd"] steps: - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@stable with: components: clippy - name: Cargo check run: cargo check --features "${{ matrix.feature }}" --no-default-features rustfmt: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@stable with: components: rustfmt - name: Run rustfmt check run: cargo fmt -- --check clippy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@stable with: components: clippy - run: cargo clippy --all-features # TODO: enable "-- -D warnings" once all outstanding clippy lints are fixed