All Projects → stackb → buildkube

stackb / buildkube

Licence: other
Bazel Remote Cache + Remote Execution in Kubernetes

Programming Languages

python
139335 projects - #7 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to buildkube

bazel-eclipse
This repo holds two IDE projects. One is the Eclipse Feature for developing Bazel projects in Eclipse. The Bazel Eclipse Feature supports importing, building, and testing Java projects that are built using the Bazel build system. The other is the Bazel Java Language Server, which is a build integration for IDEs such as VS Code.
Stars: ✭ 104 (+73.33%)
Mutual labels:  bazel
rules ruby
Ruby Rules for Bazel. It is, perhaps, production-ready. This project builds atop the work of Yugui, whose original rules can be found at https://github.com/yugui/rules_ruby. Please be aware there is an active fork of this project maintained by Coinbase at https://github.com/coinbase/rules_ruby.
Stars: ✭ 85 (+41.67%)
Mutual labels:  bazel
vim-bazel
Vim support for Bazel
Stars: ✭ 118 (+96.67%)
Mutual labels:  bazel
android-build-eval
This project includes Uber-agnostic auto-generated project(s) with a comparable complexity to existing Uber Production mobile apps. These are buildable on Buck, Bazel and Gradle- therefore enable build time benchmarking.
Stars: ✭ 82 (+36.67%)
Mutual labels:  bazel
wollemi
No description or website provided.
Stars: ✭ 25 (-58.33%)
Mutual labels:  bazel
bazel-integration-testing
Framework for integration tests that call Bazel
Stars: ✭ 33 (-45%)
Mutual labels:  bazel
rules sass
Sass rules for Bazel
Stars: ✭ 47 (-21.67%)
Mutual labels:  bazel
AlphaZero-Renju
No description or website provided.
Stars: ✭ 17 (-71.67%)
Mutual labels:  bazel
Grazel
A tool to migrate Android projects from Gradle to Bazel incrementally and automatically
Stars: ✭ 222 (+270%)
Mutual labels:  bazel
sbt-bazel
Easily convert SBT projects to Bazel workspaces
Stars: ✭ 55 (-8.33%)
Mutual labels:  bazel
bazel-nx-example
⚡ Example monorepo for Nest + Angular built with Bazel
Stars: ✭ 41 (-31.67%)
Mutual labels:  bazel
remote
Work with remote hosts seamlessly. Code local, build / execute commands remotely
Stars: ✭ 24 (-60%)
Mutual labels:  remote-execution
eclipse
Eclipse For Bazel (deprecated, see https://github.com/salesforce/bazel-eclipse instead)
Stars: ✭ 31 (-48.33%)
Mutual labels:  bazel
rules appengine
AppEngine rules for Bazel
Stars: ✭ 28 (-53.33%)
Mutual labels:  bazel
stuff
All stuff in a single repo (tests, ideas, benchmarks)
Stars: ✭ 13 (-78.33%)
Mutual labels:  bazel
rules gitops
This repository contains rules for continuous, GitOps driven Kubernetes deployments.
Stars: ✭ 112 (+86.67%)
Mutual labels:  bazel
rules java
Java rules for Bazel
Stars: ✭ 44 (-26.67%)
Mutual labels:  bazel
vim-ft-bzl
No description or website provided.
Stars: ✭ 26 (-56.67%)
Mutual labels:  bazel
copr-build-bazel
copr build of bazel | https://copr.fedorainfracloud.org/coprs/vbatts/bazel/
Stars: ✭ 14 (-76.67%)
Mutual labels:  bazel
vim-bazel
Trigger bazel from vim and load errors into the quickfix list
Stars: ✭ 15 (-75%)
Mutual labels:  bazel

buildkube

Bazel REAPI Kubernetes

buildkube uses rules_docker and rules_k8s to build and deploy bazel-buildfarm (java), bazel-buildbarn (golang) and/or buildgrid (python) into an existing kubernetes cluster. These are the 3 known open-source server-side implementations of the remote-execution-api (REAPI), plus the closed source google Remote Build Execution (RBE) service (alpha).

Known clients of the REAPI include bazel itself, recc, and possibly pants.

INSTRUCTIONS

  1. Clone this repository
  2. Edit the WORKSPACE file k8s_defaults rule to point to your kubernetes cluster (should match $ kubectl config current-context)
  3. Build and deploy an implementation: for example: $ (cd farm/ && make install)
  4. In a separate terminal, establish port-forwarding to the server implementation $ (cd farm/ && make port-forward)
  5. Clone the abseil repository as a test case: $ make abseil_clone
  6. Compile abseil remotely: $ make abseil

NOTES

  • Bazel 0.17.1 or higher is required (primarily tested on 0.17.2 on an ubuntu laptop).
  • Run all tests via $ bazel test //....
  • Each implementation goes in its own namespace. $ kubectl get pods --all-namespaces to see all.
  • Consider adjusting replicas in the deploy.yaml files and/or bazelrc file.

OBSERVATIONS

General

  • Logging in all 3 implementations is scant and makes debugging difficult. Prometheus metrics are available in the barn impl (not examined thus far).

BuildFarm

  • BuildFarm worker does not detect if server goes down. Must manually kubectl delete pod --selector=k8s-app=worker when re-installing or updating server deployment.

  • When a worker registers itself with the server (operation-queue), it provides a dict of key:value pairs that must match the action execution requirements. In particular, the worker.config container-image key MUST be exactly matching the rbe_ubuntu image tag.

BuildBarn

  • After spinning up a new install, the service seems flaky at first. Tend to get several errors like: /tmp/abseil-cpp/absl/utility/BUILD.bazel:22:1: C++ compilation of rule '//absl/utility:utility_test' failed (Exit 34). Note: Remote connection/protocol failed with: execution failed catastrophically.

NOTE(@EdShoueten): There are three ways that can be used to alleviate this issue:

More details

BuildGrid

  • Worker does not auto-reconnect to a new server (like buildfarm).
  • Instance name (main) must match across the bazelrc --instance_name=main, server args -scheduler main|ubuntu-scheduler:8981, and worker args bot --remote=http://server:8980 --parent=main host-tools
  • Overall robustness to changes (increases) in job size and worker size is low. Seems to require resetting the server/workers in some cases. Seems happiest when job size matches worker replicas.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].