Use BuildFarm for "local" remote execution. #67
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Bazel CI | |
on: | |
push: | |
branches: [ "main" ] | |
paths-ignore: | |
- README.md | |
jobs: | |
executors: | |
name: Build & Push Executor Container Images | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
packages: write | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
sparse-checkout: | | |
executors | |
- uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- uses: docker/setup-buildx-action@v2 | |
- uses: docker/bake-action@v3 | |
with: | |
push: true | |
workdir: executors | |
set: | | |
*.cache-from=type=gha | |
*.cache-to=type=gha,mode=max | |
bazel: | |
name: Bazel Build & Test w/Docker | |
runs-on: ubuntu-latest | |
needs: | |
- executors | |
steps: | |
- name: Bazel Home RC | |
run: | | |
echo "test --config=ci" >> ~/.bazelrc | |
echo "build --config=docker" >> ~/.bazelrc | |
echo "build --disk_cache=~/.cache/bazel.disk" >> ~/.bazelrc | |
- uses: actions/cache@v3 | |
with: | |
path: ${{github.workspace}}/.cache/bazel.disk | |
key: bazel | |
- uses: actions/checkout@v3 | |
- name: Work around https://github.com/actions/upload-artifact/issues/92 | |
run: echo "bazel_out=$(sudo runuser -u runner -g runner -G docker -- bazel info output_path)" >> $GITHUB_ENV | |
- name: Bazel Build | |
run: sudo runuser -u runner -g runner -G docker -- bazel build hellos tars rpms debs | |
- name: Bazel Host Tests | |
run: sudo runuser -u runner -g runner -G docker -- bazel test --strategy=TestRunner=sandboxed host-{hellos,tars}-test # We won't test the RPM and DEB tests on the host as they actually install the package. | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: host-test-results | |
path: ${{env.bazel_out}}/*/testlogs/** | |
- name: Bazel Remote Tests | |
run: sudo runuser -u runner -g runner -G docker -- bazel test --strategy=TestRunner=docker platform-{hello,tar,rpm,deb}-test-suite | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: docker-test-results | |
path: ${{env.bazel_out}}/*/testlogs/** | |
- run: sudo runuser -u runner -g runner -G docker -- bazel shutdown | |
buildbuddy: | |
name: Bazel Build & Test w/BuildBuddy | |
runs-on: ubuntu-latest | |
needs: | |
- executors | |
steps: | |
- name: Bazel Home RC | |
run: | | |
echo "test --config=ci" >> ~/.bazelrc | |
echo "build --config=bb" >> ~/.bazelrc | |
echo "build:bb --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_ORG_API_KEY }}" >> ~/.bazelrc | |
- uses: actions/checkout@v3 | |
- name: Work around https://github.com/actions/upload-artifact/issues/92 | |
run: echo "bazel_out=$(bazel info output_path)" >> $GITHUB_ENV | |
- name: Bazel Build | |
run: bazel build hellos tars rpms debs | |
- name: Bazel Test | |
run: bazel test platform-{hello,tar,rpm,deb}-test-suite | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: buildbuddy-test-results | |
path: ${{env.bazel_out}}/*/testlogs/** | |
- run: bazel shutdown |