Skip to content

Instantly share code, notes, and snippets.

@craftslab
Last active April 1, 2024 07:47
Show Gist options
  • Save craftslab/cb93198587b7a180f71deeb0910ac7e5 to your computer and use it in GitHub Desktop.
Save craftslab/cb93198587b7a180f71deeb0910ac7e5 to your computer and use it in GitHub Desktop.
bazel build

1. bazel-buildfarm

Docker

# Build in Docker
# Refer: https://buildkite.com/bazel/buildfarm-farmer/builds/7827#018dd346-c235-472f-ba9c-254c5e99783d
docker run -it --rm gcr.io/bazel-public/ubuntu2004-java11:latest /bin/bash
# Run in Docker
docker run --network=bridge --mount type=bind,source=/path/to/buildfarm-config.yml,target=/bazel-buildfarm/buildfarm-config.yml distbuild/bazelbuild/bazel-buildfarm/server:latest
docker run --network=bridge --mount type=bind,source=/path/to/buildfarm-config.yml,target=/bazel-buildfarm/buildfarm-config.yml distbuild/bazelbuild/bazel-buildfarm/worker:latest

Build

# Install bazelisk
curl -L https://github.com/bazelbuild/bazelisk/releases/download/v1.19.0/bazelisk-linux-amd64 -o bazelisk
chmod +x bazelisk
sudo mv bazelisk /usr/local/bin

# Install JDK
sudo apt update -y
sudo apt install -y openjdk-17-jdk

# Clone repo
git clone https://github.com/bazelbuild/bazel-buildfarm.git

# buildfarm-server: bazel-bin/src/main/java/build/buildfarm/buildfarm-server_deploy.jar
cd bazel-buildfarm
bazelisk build //src/main/java/build/buildfarm:buildfarm-server_deploy.jar

# buildfarm-shard-worker: bazel-bin/src/main/java/build/buildfarm/buildfarm-shard-worker_deploy.jar
cd bazel-buildfarm
bazelisk build //src/main/java/build/buildfarm:buildfarm-shard-worker_deploy.jar

Run

# Refer: bazelisk run //src/main/java/build/buildfarm:buildfarm-server -- <logfile> <configfile>
cd bazel-buildfarm
java -jar bazel-bin/src/main/java/build/buildfarm/buildfarm-server_deploy.jar examples/config.minimal.yml

# Refer: bazelisk run //src/main/java/build/buildfarm:buildfarm-shard-worker -- <logfile> <configfile>
cd bazel-buildfarm
java -jar bazel-bin/src/main/java/build/buildfarm/buildfarm-shard-worker_deploy.jar examples/config.minimal.yml

Actions

https://github.com/distbuild/bazel-buildfarm/blob/main/.github/workflows/release.yml

Refer: sandbox_bazel-workflows

2. bf-cat

Docker

# Refer: https://buildkite.com/bazel/buildfarm-farmer/builds/7827#018dd346-c235-472f-ba9c-254c5e99783d
docker run -it --rm gcr.io/bazel-public/ubuntu2004-java11:latest /bin/bash

Build

# Install bazelisk
curl -L https://github.com/bazelbuild/bazelisk/releases/download/v1.19.0/bazelisk-linux-amd64 -o bazelisk
chmod +x bazelisk
sudo mv bazelisk /usr/local/bin

# Install JDK
sudo apt update -y
sudo apt install -y openjdk-17-jdk

# Clone repo
git clone https://github.com/bazelbuild/bazel-buildfarm.git

# bf-cat: bazel-bin/src/main/java/build/buildfarm/tools/bf-cat_deploy.jar
cd bazel-buildfarm
bazelisk build //src/main/java/build/buildfarm/tools:bf-cat_deploy.jar

Run

# Refer: bf-cat <host[:port]> <instance-name> <hash-function> <command> [params...]

3. bf-find-operations

Docker

# Refer: https://buildkite.com/bazel/buildfarm-farmer/builds/7827#018dd346-c235-472f-ba9c-254c5e99783d
docker run -it --rm gcr.io/bazel-public/ubuntu2004-java11:latest /bin/bash

Build

# Install bazelisk
curl -L https://github.com/bazelbuild/bazelisk/releases/download/v1.19.0/bazelisk-linux-amd64 -o bazelisk
chmod +x bazelisk
sudo mv bazelisk /usr/local/bin

# Install JDK
sudo apt update -y
sudo apt install -y openjdk-17-jdk

# Clone repo
git clone https://github.com/bazelbuild/bazel-buildfarm.git

# bf-find-operations: bazel-bin/src/main/java/build/buildfarm/tools/bf-find-operations_deploy.jar
cd bazel-buildfarm
bazelisk build //src/main/java/build/buildfarm/tools:bf-find-operations_deploy.jar

Run

# Refer: bf-find-operations localhost:8980 shard SHA256

4. buildfarm-redis

Run

docker run -d --privileged --rm --name buildfarm-redis -p 6379:6379 redis:5.0.9

5. Issue

Fix com_grail_bazel_toolchain fetch

# Refer: https://github.com/bazelbuild/bazel-buildfarm/issues/1628
# Refer: https://github.com/bazelbuild/bazel-buildfarm/pull/1630/commits/e71f594da4670cffae81faf644702f3c8b18d426
diff --git a/deps.bzl b/deps.bzl
index 51dfbb95..e95cca63 100644
--- a/deps.bzl
+++ b/deps.bzl
@@ -100,8 +100,8 @@ def archive_dependencies(third_party):
         # Used to format proto files
         {
             "name": "com_grail_bazel_toolchain",
-            "sha256": "ee74a364a978fa3c85ea56d736010bfc44ea22b439691e9cefdf72284d6c9b93",
-            "strip_prefix": "bazel-toolchain-d46339675a83e3517d955f5456e525501c3e05b8",
+            "sha256":"a64a58440db5714369323eedffa9ce7eefd17e0fde2608ce0e658f2e61c9793c",
+            "strip_prefix": "toolchains_llvm-d46339675a83e3517d955f5456e525501c3e05b8",
             "url": "https://github.com/grailbio/bazel-toolchain/archive/d46339675a83e3517d955f5456e525501c3e05b8.tar.gz",
             "patch_args": ["-p1"],
             "patches": ["%s:clang_toolchain.patch" % third_party],

issue-1628

6. reclient

Docker

# Refer: https://buildkite.com/bazel/buildfarm-farmer/builds/7827#018dd346-c235-472f-ba9c-254c5e99783d
docker run -it --rm gcr.io/bazel-public/ubuntu2004-java11:latest /bin/bash

Install

# Install bazelisk
curl -L https://github.com/bazelbuild/bazelisk/releases/download/v1.19.0/bazelisk-linux-amd64 -o bazelisk
chmod +x bazelisk
sudo mv bazelisk /usr/local/bin

# Install JDK
sudo apt update -y
sudo apt install -y openjdk-17-jdk

# Install depot_tools
git clone https://chromium.googlesource.com/chromium/tools/depot_tools --depth=1
export PATH=$PWD/depot_tools:$PATH

Fetch

bazelisk fetch --repository_cache="/path/to/repository/cache" //...

# https://github.com/bazelbuild/reclient
bazelisk fetch --repository_cache="/path/to/repository/cache" //cmd/...

Build

bazelisk build --repository_cache="/path/to/repository/cache" //...

# https://github.com/bazelbuild/reclient
#
# bootstrap: bazel-bin/cmd/bootstrap/bootstrap_/bootstrap
# dumpstats: bazel-bin/cmd/dumpstats/dumpstats_/dumpstats
# reproxy: bazel-bin/cmd/reproxy/reproxy_/reproxy
# rewrapper: bazel-bin/cmd/rewrapper/rewrapper_/rewrapper
bazelisk build --config=clangscandeps --repository_cache="/path/to/repository/cache" //cmd/...

# scandeps_server: https://chrome-infra-packages.appspot.com/p/infra/rbe/client/linux-amd64

Run

# Run reproxy
./bootstrap -re_proxy=./reproxy -cfg=./reproxy-config

# Run build
./rewrapper --cfg=rewrapper-config bazel build //main:hello-world

# Fetch log
cat /tmp/reproxy.INFO

# Stop reproxy
./bootstrap -re_proxy=./reproxy --shutdown

Actions

https://github.com/distbuild/reclient/blob/main/.github/workflows/release.yml

Refer: sandbox_bazel-workflows

7. Reference

FROM openjdk:17-jdk-alpine
RUN mkdir /bazel-buildfarm
COPY *.jar /bazel-buildfarm/
COPY *.yml /bazel-buildfarm/
ENTRYPOINT ["java", "-jar", "/bazel-buildfarm/buildfarm-server.jar", "/bazel-buildfarm/buildfarm-config.yml"]
FROM openjdk:17-jdk-alpine
RUN mkdir /bazel-buildfarm
COPY *.jar /bazel-buildfarm/
COPY *.yml /bazel-buildfarm/
ENTRYPOINT ["java", "-jar", "/bazel-buildfarm/buildfarm-shard-worker.jar", "/bazel-buildfarm/buildfarm-config.yml"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment