name: bazel

on:
  push: {}
  pull_request: {}

jobs:
  job:
    name: bazel.${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-2022]

    steps:
    - uses: actions/checkout@v3

    - name: mount bazel cache
      uses: actions/cache@v3
      env:
        cache-name: bazel-cache
      with:
        path: "~/.cache/bazel"
        key: ${{ env.cache-name }}-${{ matrix.os }}-${{ github.ref }}
        restore-keys: |
          ${{ env.cache-name }}-${{ matrix.os }}-main

    - name: build
      run: |
        bazel build //:benchmark //:benchmark_main //test/...

    - name: test
      run: |
        bazel test --test_output=all //test/...
