name: CI on: push: branches: - master pull_request: branches: - master jobs: build: name: Build and Test runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] steps: - uses: actions/checkout@v4 with: submodules: true - name: Install Rust uses: dtolnay/rust-toolchain@stable - name: Restore Rust Cache uses: actions/cache/restore@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ matrix.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Setup Aftman uses: ok-nick/setup-aftman@v0.4.2 with: version: 'v0.3.0' - name: Build run: cargo build --locked --verbose - name: Test run: cargo test --locked --verbose - name: Save Rust Cache uses: actions/cache/save@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ matrix.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} msrv: name: Check MSRV runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: true - name: Install Rust uses: dtolnay/rust-toolchain@1.79.0 - name: Restore Rust Cache uses: actions/cache/restore@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Setup Aftman uses: ok-nick/setup-aftman@v0.4.2 with: version: 'v0.3.0' - name: Build run: cargo build --locked --verbose - name: Save Rust Cache uses: actions/cache/save@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} lint: name: Rustfmt, Clippy, Stylua, & Selene runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: true - name: Install Rust uses: dtolnay/rust-toolchain@stable with: components: rustfmt, clippy - name: Restore Rust Cache uses: actions/cache/restore@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Setup Aftman uses: ok-nick/setup-aftman@v0.4.2 with: version: 'v0.3.0' - name: Stylua run: stylua --check plugin/src - name: Selene run: selene plugin/src - name: Rustfmt run: cargo fmt -- --check - name: Clippy run: cargo clippy - name: Save Rust Cache uses: actions/cache/save@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}