name: "[CI]: Pull Request" on: pull_request: workflow_dispatch: jobs: prtasks: name: "[${{ matrix.os }}] ${{ matrix.cargo.name }}" runs-on: "${{ matrix.os }}" strategy: fail-fast: false matrix: os: - ubuntu-latest rust: - stable cargo: - name: "Clippy" cmd: clippy args: -- -D clippy::all -W clippy::style - name: "Unit Tests" cmd: test args: --lib --bins include: - os: ubuntu-latest sccache-path: /home/runner/.cache/sccache env: RUST_BACKTRACE: full RUSTC_WRAPPER: sccache SCCACHE_CACHE_SIZE: 1G SCCACHE_DIR: ${{ matrix.sccache-path }} steps: # Checkout code - name: "Git checkout" uses: actions/checkout@v2 # Install sccache - name: "Install sccache" if: matrix.os == 'ubuntu-latest' env: SCCACHE_URL: https://github.com/mozilla/sccache/releases/download SCCACHE_VERSION: v0.2.15 run: | SCCACHE_FILE=sccache-$SCCACHE_VERSION-x86_64-unknown-linux-musl curl -sSL "$SCCACHE_URL/$SCCACHE_VERSION/$SCCACHE_FILE.tar.gz" | tar xz install -vDm 755 "$SCCACHE_FILE/sccache" "$HOME/.local/bin/sccache" echo "$HOME/.local/bin" >> "$GITHUB_PATH" # Install Rust toolchain - name: "Install Rust ${{ matrix.rust }}" uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.rust }} profile: minimal override: true # Rebuild cache - name: Cache cargo registry uses: actions/cache@v2 continue-on-error: false with: path: | ~/.cargo/registry ~/.cargo/git key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo- - name: Save sccache uses: actions/cache@v2 continue-on-error: false with: path: ${{ matrix.sccache-path }} key: ${{ runner.os }}-sccache-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-sccache- # Run job - name: "Start sccache server" run: sccache --start-server - name: "Task ${{ matrix.cargo.name }}" uses: actions-rs/cargo@v1 with: command: ${{ matrix.cargo.cmd }} args: ${{ matrix.cargo.args }} - name: "Print sccache stats" run: sccache --show-stats - name: "Stop sccache server" run: sccache --stop-server || true