Skip to content

Commit

Permalink
Shard CI (bazel-contrib#266)
Browse files Browse the repository at this point in the history
CI is currently unbearably slow because it runs each config
sequentially.

Instead, run them in parallel. This also opens up matrix support to be
able to run more OSes (because we should test on Windows, which
increasingly is starting to work :))
  • Loading branch information
illicitonion authored May 3, 2024
1 parent 09685c3 commit 649e64a
Show file tree
Hide file tree
Showing 4 changed files with 137 additions and 66 deletions.
66 changes: 0 additions & 66 deletions .github/workflows/ci.yaml

This file was deleted.

41 changes: 41 additions & 0 deletions .github/workflows/examples.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Examples

on:
push:
branches: [main]
pull_request:
branches: [main]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
examples:
strategy:
matrix:
runs-on:
- ubuntu-latest

runs-on: ${{ matrix.runs-on }}

steps:
- uses: actions/checkout@v3

- uses: bazelbuild/setup-bazelisk@v2

- name: Mount bazel action cache
uses: actions/cache@v2
with:
path: "~/.cache/bazel"
key: bazel

- name: Mount bazel repo cache
uses: actions/cache@v2
with:
path: "~/.cache/bazel-repo"
key: bazel-repo

- name: bzlmod tests and lints
env:
# Bazelisk will download bazel to here, ensure it is cached between runs.
XDG_CACHE_HOME: ~/.cache/bazel-repo
run: (cd examples/tests_and_lints && bazel --bazelrc=../../.github/workflows/ci.bazelrc test --enable_bzlmod //...)
41 changes: 41 additions & 0 deletions .github/workflows/gazelle_examples.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Gazelle Examples

on:
push:
branches: [main]
pull_request:
branches: [main]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
gazelle_examples:
strategy:
matrix:
runs-on:
- ubuntu-latest

runs-on: ${{ matrix.runs-on }}

steps:
- uses: actions/checkout@v3

- uses: bazelbuild/setup-bazelisk@v2

- name: Mount bazel action cache
uses: actions/cache@v2
with:
path: "~/.cache/bazel"
key: bazel

- name: Mount bazel repo cache
uses: actions/cache@v2
with:
path: "~/.cache/bazel-repo"
key: bazel-repo

- name: bzlmod gazelle
env:
# Bazelisk will download bazel to here, ensure it is cached between runs.
XDG_CACHE_HOME: ~/.cache/bazel-repo
run: (cd examples/gazelle && bazelisk --bazelrc=../../.github/workflows/ci.bazelrc run --enable_bzlmod //:gazelle && bazelisk --bazelrc=../../.github/workflows/ci.bazelrc test --enable_bzlmod //...)
55 changes: 55 additions & 0 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Tests

# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches: [main]
pull_request:
branches: [main]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
test:
strategy:
matrix:
runs-on:
- ubuntu-latest
flags:
- ""
- --config=jdk11
- --noenable_bzlmod

# The type of runner that the job will run on
runs-on: ${{ matrix.runs-on }}

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- uses: actions/checkout@v3

- uses: actions/setup-java@v4
with:
distribution: "zulu"
java-version: "21"

- uses: bazelbuild/setup-bazelisk@v2

- name: Mount bazel action cache
uses: actions/cache@v2
with:
path: "~/.cache/bazel"
key: bazel

- name: Mount bazel repo cache
uses: actions/cache@v2
with:
path: "~/.cache/bazel-repo"
key: bazel-repo

- name: bazel test //... (Java ${{ matrix.java-major-version }})
env:
# Bazelisk will download bazel to here, ensure it is cached between runs.
XDG_CACHE_HOME: ~/.cache/bazel-repo
run: bazelisk --bazelrc=.github/workflows/ci.bazelrc test ${{ matrix.flags }} //...

0 comments on commit 649e64a

Please sign in to comment.