| name: Build and Test with Bazel |
| permissions: |
| contents: read |
| |
| on: |
| push: |
| branches: |
| - 'main' |
| pull_request: |
| types: [opened, synchronize, reopened, unlabeled] |
| |
| jobs: |
| build: |
| if: github.event.action != 'unlabeled' || github.event.label.name == 'kokoro:run' |
| timeout-minutes: 120 |
| strategy: |
| matrix: |
| os: [ubuntu-latest, windows-2025] |
| |
| runs-on: ${{matrix.os}} |
| |
| steps: |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 |
| with: |
| fetch-depth: '0' |
| - name: Download dependencies |
| run: python3 utils/git-sync-deps |
| - name: Mount Bazel cache |
| uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 |
| with: |
| path: ~/.bazel/cache |
| key: bazel-cache-${{ runner.os }} |
| - name: Build All |
| run: bazel --output_user_root=~/.bazel/cache build //... |
| - name: Test All |
| run: bazel --output_user_root=~/.bazel/cache test --test_output=errors //... |
| |
| # iOS is 10x expensive to run on GitHub machines, so only run if we know something else passed |
| # The steps are unfortunately duplicated because github actions requires 2 jobs for a dependency |
| build-macos: |
| needs: build |
| timeout-minutes: 120 |
| runs-on: macos-latest |
| |
| steps: |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 |
| with: |
| fetch-depth: '0' |
| - name: Download dependencies |
| run: python3 utils/git-sync-deps |
| - name: Mount Bazel cache |
| uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 |
| with: |
| path: ~/.bazel/cache |
| key: bazel-cache-${{ runner.os }} |
| - name: Build All |
| run: bazel --output_user_root=~/.bazel/cache build //... |
| - name: Test All |
| run: bazel --output_user_root=~/.bazel/cache test --test_output=errors //... |