From cd5cf4a6b6a28576bb0ce2bcf615b2aa19a2e117 Mon Sep 17 00:00:00 2001 From: martin4861 Date: Mon, 24 Nov 2025 09:28:31 +0100 Subject: [PATCH 1/6] Initial buildbuddy setup --- .bazelrc | 4 + .github/workflows/ci.yaml | 204 +------------------------------------- 2 files changed, 5 insertions(+), 203 deletions(-) diff --git a/.bazelrc b/.bazelrc index a611f5cc..7fb19fbe 100644 --- a/.bazelrc +++ b/.bazelrc @@ -7,6 +7,10 @@ common --@rules_swiftnav//cc:enable_bzlmod=true # Preparation for Bazel 8 behavior of paths in external (plus instead of tilde) common --incompatible_use_plus_in_repo_names +# This is an open source project and we want to test BuildBuddy integration +build --bes_results_url=https://app.buildbuddy.io/invocation/ +build --bes_backend=grpcs://remote.buildbuddy.io + # Don't let environment variables pollute the build # PATH is part of the action input and can lead to massive cache misses build --incompatible_strict_action_env diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 68f28f6b..4dffeee4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -11,122 +11,6 @@ concurrency: cancel-in-progress: true jobs: - - ubuntu-gcc11: - runs-on: ubuntu-22.04 - steps: - - - name: Checkout source - uses: actions/checkout@v5 - with: - submodules: recursive - ssh-key: ${{ secrets.SSH_KEY }} - - - name: Install gcc-11 - run: | - sudo apt-get update - sudo apt-get install build-essential software-properties-common libsuitesparse-dev -y - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y - sudo apt-get update - sudo apt-get install gcc-11 g++-11 -y - gcc -v - - name: Run build - env: - CC: gcc-11 - CXX: g++-11 - TESTENV: gcc11 - GCCVER: "11" - run: | - bash ./ci/run_tests.sh - bash ./ci/ensure_copyright.sh - - ubuntu-clang14: - runs-on: ubuntu-22.04 - steps: - - - name: Checkout source - uses: actions/checkout@v5 - with: - submodules: recursive - ssh-key: ${{ secrets.SSH_KEY }} - - - name: Install clang-14 - run: | - sudo apt-get update - sudo apt-get install build-essential software-properties-common libsuitesparse-dev -y - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y - sudo apt-get update - sudo apt-get install clang-14 -y - gcc -v - - name: Run build - env: - CC: clang-14 - CXX: clang++-14 - TESTENV: clang14 - run: | - bash ./ci/run_tests.sh - bash ./ci/ensure_copyright.sh - - ubuntu-clang14-sanitizers: - runs-on: ubuntu-22.04 - strategy: - matrix: - test: - - { name: "address-undefined-leak", script: "./ci/run_address_sanitizer_tests.sh" } - - { name: "thread", script: "./ci/run_thread_sanitizer_tests.sh" } - # Memory sanitizer is not run because it requires building a - # custom instrumented libc. - steps: - - name: Checkout source - uses: actions/checkout@v5 - with: - submodules: recursive - ssh-key: ${{ secrets.SSH_KEY }} - - - name: Install clang-14 - run: | - sudo apt-get update - sudo apt-get install build-essential software-properties-common libsuitesparse-dev -y - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y - sudo apt-get update - sudo apt-get install clang-14 -y - clang -v - - name: Run (${{ matrix.test.name }}) sanitizer tests - env: - CC: clang-14 - CXX: clang++-14 - TESTENV: clang14 - run: | - bash "${{ matrix.test.script }}" - - format: - runs-on: ubuntu-22.04 - steps: - - - name: Checkout source - uses: actions/checkout@v5 - with: - submodules: recursive - ssh-key: ${{ secrets.SSH_KEY }} - - - uses: bazel-contrib/setup-bazel@0.15.0 - - - uses: extractions/netrc@v2 - with: - machine: raw.githubusercontent.com - username: ${{ secrets.GH_NAME }} - password: ${{ secrets.GH_TOKEN }} - - - name: Mount bazel cache - uses: actions/cache@v4 - with: - path: "~/.cache/bazel" - key: format - - - name: Format - run: bazel build --config=clang-format-check //... - - bazel: runs-on: ubuntu-22.04 steps: @@ -145,91 +29,5 @@ jobs: username: ${{ secrets.GH_NAME }} password: ${{ secrets.GH_TOKEN }} - - name: Mount bazel cache - uses: actions/cache@v4 - with: - path: "~/.cache/bazel" - key: bazel - - name: Build and test - run: bazel test //... - - osx-clang: - runs-on: macOS-14 - steps: - - - name: Checkout source - uses: actions/checkout@v5 - with: - submodules: recursive - ssh-key: ${{ secrets.SSH_KEY }} - - - name: check clang - run: | - clang --version - - name: install suite-sparse - run: | - brew install suite-sparse - - name: Run build - env: - CC: clang - CXX: clang++ - TESTENV: clang - run: | - bash ./ci/run_tests.sh - - ubuntu-build-documentation: - runs-on: "ubuntu-22.04" - defaults: - run: - shell: bash -l {0} - steps: - - uses: conda-incubator/setup-miniconda@v3 - with: - auto-update-conda: true - auto-activate-base: false - - name: Checkout source - uses: actions/checkout@v5 - with: - submodules: recursive - ssh-key: ${{ secrets.SSH_KEY }} - - - name: Install Prerequisites - run: | - sudo apt-get update - sudo apt-get install build-essential software-properties-common -y - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y - sudo apt-get update - - - name: Build Docs - run: | - conda env create --file ./ci/albatross_docs_environment.yml - conda activate albatross - cd doc - make html - - clang-tidy: - runs-on: ubuntu-22.04 - steps: - - - name: Checkout source - uses: actions/checkout@v5 - with: - submodules: recursive - ssh-key: ${{ secrets.SSH_KEY }} - - - name: Install clang-tools-14 - run: | - sudo apt-get update && \ - sudo apt-get install build-essential software-properties-common -y && \ - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && \ - sudo apt-get update && \ - sudo apt-get install clang-14 clang-tools-14 clang-tidy-14 && \ - sudo ln -s /usr/bin/clang-apply-replacements-14 /usr/local/bin/clang-apply-replacements - - name: Run build - continue-on-error: true - env: - CC: clang-14 - CXX: clang++-14 - run: | - bash ./ci/run_tidy.sh + run: bazel test --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_TEST }} //... From 42b2f75490c13fa94f67eb8c15f61beee07de481 Mon Sep 17 00:00:00 2001 From: martin4861 Date: Mon, 24 Nov 2025 11:38:41 +0100 Subject: [PATCH 2/6] Setup BuildBuddy remote cache --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 4dffeee4..150cb73e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -30,4 +30,4 @@ jobs: password: ${{ secrets.GH_TOKEN }} - name: Build and test - run: bazel test --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_TEST }} //... + run: bazel test --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_TEST }} --remote_cache=grpcs://remote.buildbuddy.io --remote_timeout=10m //... From 5d5719e3f51cf635ed4bde135fc28418f7f589d5 Mon Sep 17 00:00:00 2001 From: martin4861 Date: Mon, 24 Nov 2025 11:47:52 +0100 Subject: [PATCH 3/6] Only build, no testing --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 150cb73e..0a843117 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -30,4 +30,4 @@ jobs: password: ${{ secrets.GH_TOKEN }} - name: Build and test - run: bazel test --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_TEST }} --remote_cache=grpcs://remote.buildbuddy.io --remote_timeout=10m //... + run: bazel build --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_TEST }} --remote_cache=grpcs://remote.buildbuddy.io --remote_timeout=10m //... From bdc8d906944871288fd38a57fadd1982571ed4e2 Mon Sep 17 00:00:00 2001 From: martin4861 Date: Mon, 24 Nov 2025 11:56:17 +0100 Subject: [PATCH 4/6] RE --- .bazelrc | 4 ++++ .github/workflows/ci.yaml | 2 +- BUILD.bazel | 13 +++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/.bazelrc b/.bazelrc index 7fb19fbe..e5a6130b 100644 --- a/.bazelrc +++ b/.bazelrc @@ -11,6 +11,10 @@ common --incompatible_use_plus_in_repo_names build --bes_results_url=https://app.buildbuddy.io/invocation/ build --bes_backend=grpcs://remote.buildbuddy.io +build:rbe --platforms=//:docker_image_platform +build:rbe --host_platform=//:docker_image_platform + + # Don't let environment variables pollute the build # PATH is part of the action input and can lead to massive cache misses build --incompatible_strict_action_env diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 0a843117..140c4859 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -30,4 +30,4 @@ jobs: password: ${{ secrets.GH_TOKEN }} - name: Build and test - run: bazel build --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_TEST }} --remote_cache=grpcs://remote.buildbuddy.io --remote_timeout=10m //... + run: bazel build --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_TEST }} --remote_cache=grpcs://remote.buildbuddy.io --remote_timeout=10m --remote_executor=grpcs://remote.buildbuddy.io --config=rbe //... diff --git a/BUILD.bazel b/BUILD.bazel index eccde718..26d620ad 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -472,3 +472,16 @@ test_suite( ":albatross-test-misc", ], ) + +platform( + name = "docker_image_platform", + constraint_values = [ + "@platforms//cpu:x86_64", + "@platforms//os:linux", + ], + exec_properties = { + "OSFamily": "Linux", + "dockerNetwork": "off", + "container-image": "docker://gcr.io/flame-public/rbe-ubuntu20-04:latest", + }, +) From c6cbe8138b6a46eda6f752bc1bfc39065680409a Mon Sep 17 00:00:00 2001 From: martin4861 Date: Tue, 25 Nov 2025 09:40:12 +0100 Subject: [PATCH 5/6] Add rbe_readonly --- .bazelrc | 4 ++++ .github/workflows/ci.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.bazelrc b/.bazelrc index e5a6130b..f152c6e8 100644 --- a/.bazelrc +++ b/.bazelrc @@ -13,7 +13,11 @@ build --bes_backend=grpcs://remote.buildbuddy.io build:rbe --platforms=//:docker_image_platform build:rbe --host_platform=//:docker_image_platform +build:rbe --remote_cache=grpcs://remote.buildbuddy.io +build:rbe --remote_timeout=10m +build:rbe_readonly --config=rbe +build:rbe_readonly --noremote_upload_local_results # Don't let environment variables pollute the build # PATH is part of the action input and can lead to massive cache misses diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 140c4859..b45c1e70 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -30,4 +30,4 @@ jobs: password: ${{ secrets.GH_TOKEN }} - name: Build and test - run: bazel build --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_TEST }} --remote_cache=grpcs://remote.buildbuddy.io --remote_timeout=10m --remote_executor=grpcs://remote.buildbuddy.io --config=rbe //... + run: bazel build --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_TEST }} --remote_executor=grpcs://remote.buildbuddy.io --config=rbe //... From 6e0b5078e2e25befcf9e77e3e45c6d24acb39d48 Mon Sep 17 00:00:00 2001 From: martin4861 Date: Tue, 25 Nov 2025 10:39:44 +0100 Subject: [PATCH 6/6] Add standaline_test to prove remote test execution --- .github/workflows/ci.yaml | 5 ++++- BUILD.bazel | 10 ++++++++++ tests/standalone_test.cc | 5 +++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 tests/standalone_test.cc diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b45c1e70..e1a97c62 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -29,5 +29,8 @@ jobs: username: ${{ secrets.GH_NAME }} password: ${{ secrets.GH_TOKEN }} - - name: Build and test + - name: Build run: bazel build --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_TEST }} --remote_executor=grpcs://remote.buildbuddy.io --config=rbe //... + + - name: Test + run: bazel test --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_TEST }} --remote_executor=grpcs://remote.buildbuddy.io --config=rbe //:standalone_test diff --git a/BUILD.bazel b/BUILD.bazel index 26d620ad..627c862c 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -473,6 +473,16 @@ test_suite( ], ) +swift_cc_test( + name = "standalone_test", + srcs = ["tests/standalone_test.cc"], + includes = ["tests"], + local_defines = ["CSV_IO_NO_THREAD"], + type = UNIT, + deps = ["@gtest//:gtest_main"], + standard=17, +) + platform( name = "docker_image_platform", constraint_values = [ diff --git a/tests/standalone_test.cc b/tests/standalone_test.cc new file mode 100644 index 00000000..0cd5a93d --- /dev/null +++ b/tests/standalone_test.cc @@ -0,0 +1,5 @@ +#include + +TEST(StandaloneTest, SampleTest) { + EXPECT_EQ(1 + 1, 2); +}