name: Build on: pull_request: push: branches: - master - staging - trying env: CARGO_TERM_COLOR: always jobs: # Run cargo fmt --check, includes macros/ style: name: style runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install Rust uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true components: rustfmt - name: cargo fmt --check uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check # Compilation check check: name: check runs-on: ubuntu-latest strategy: matrix: target: - x86_64-unknown-linux-gnu toolchain: - stable steps: - name: Checkout uses: actions/checkout@v4 - name: Cache cargo dependencies uses: actions/cache@v4 with: path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ key: ${{ runner.OS }}-cargo-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.OS }}-cargo-${{ hashFiles('**/Cargo.lock') }} ${{ runner.OS }}-cargo- - name: Cache build output dependencies uses: actions/cache@v4 with: path: target key: ${{ runner.OS }}-build-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.OS }}-build-${{ hashFiles('**/Cargo.lock') }} ${{ runner.OS }}-build- - name: Install Rust ${{ matrix.toolchain }} with target (${{ matrix.target }}) uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.toolchain }} target: ${{ matrix.target }} override: true - name: cargo check uses: actions-rs/cargo@v1 with: use-cross: false command: check args: --target=${{ matrix.target }} tests: name: tests runs-on: ubuntu-latest strategy: matrix: target: - x86_64-unknown-linux-gnu toolchain: - stable steps: - name: Checkout uses: actions/checkout@v4 - name: Cache cargo dependencies uses: actions/cache@v4 with: path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ key: ${{ runner.OS }}-cargo-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.OS }}-cargo- - name: Cache build output dependencies uses: actions/cache@v4 with: path: target key: ${{ runner.OS }}-build-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.OS }}-build- - name: Install Rust uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.toolchain }} target: ${{ matrix.target }} override: true - uses: actions-rs/cargo@v1 with: use-cross: false command: test args: --target=${{ matrix.target }}