| name: Build and Test with Bazel | |
| permissions: | |
| contents: read | |
| on: | |
| push: | |
| branches: | |
| - 'main' | |
| pull_request: | |
| jobs: | |
| build: | |
| timeout-minutes: 120 | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| runs-on: ${{matrix.os}} | |
| steps: | |
| - uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: '0' | |
| - name: Download dependencies | |
| run: python3 utils/git-sync-deps | |
| - name: Mount Bazel cache | |
| uses: actions/cache@v3 | |
| with: | |
| path: ~/.bazel/cache | |
| key: bazel-cache-${{ runner.os }} | |
| - name: Build All (Windows) | |
| if: ${{matrix.os == 'windows-latest' }} | |
| run: bazel --output_user_root=~/.bazel/cache build --cxxopt=/std:c++17 //... | |
| - name: Test All (Windows) | |
| if: ${{matrix.os == 'windows-latest' }} | |
| run: bazel --output_user_root=~/.bazel/cache test --cxxopt=/std:c++17 //... | |
| - name: Build All (Linux, MacOS) | |
| if: ${{ matrix.os != 'windows-latest' }} | |
| run: bazel --output_user_root=~/.bazel/cache build --cxxopt=-std=c++17 //... | |
| - name: Test All (Linux, MacOS) | |
| if: ${{ matrix.os != 'windows-latest' }} | |
| run: bazel --output_user_root=~/.bazel/cache test --cxxopt=-std=c++17 //... |