on: push: branches: - main pull_request: branches: - main name: CI jobs: test: strategy: matrix: platform: [ubuntu-latest, windows-latest, macos-latest] runs-on: ${{ matrix.platform }} steps: - name: Checkout code uses: actions/checkout@v3 with: submodules: true - name: Install Rust (1.66 w/ clippy) uses: dtolnay/rust-toolchain@1.66 with: components: clippy - name: Install Rust (nightly w/ rustfmt) run: rustup toolchain install nightly --component rustfmt - name: Cache cargo registry uses: actions/cache@v3 with: path: ~/.cargo/registry key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} - name: Cache cargo build uses: actions/cache@v3 with: path: target key: ${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }} - name: Check formatting run: cargo +nightly fmt --all -- --check - name: Check Clippy if: matrix.platform == 'ubuntu-latest' uses: giraffate/clippy-action@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }} reporter: 'github-check' - name: Run tests run: cargo test - name: Build artifacts run: cargo build --release - name: Upload artifacts uses: actions/upload-artifact@master with: name: iamb-${{ matrix.platform }} path: | ./target/release/iamb ./target/release/iamb.exe