谁在使用 Bazel

报告问题 查看源代码 每夜 build · 7.4 .

本页面列出了已知会使用 Bazel 的公司和 OSS 项目。 这并不构成对其的认可。

使用 Bazel 的公司

acqio

Acqio 是一家金融科技公司,为中小型商家提供付款产品和服务。Acqio 拥有一些单 repo,并将 Bazel 与 Kubernetes 搭配使用,以提供快速可靠的微服务。

Adobe

Adobe 已发布适用于 GitOps 驱动的持续 Kubernetes 部署的 Bazel 规则

Asana

Asana 是一款 Web 和移动应用,旨在帮助团队跟踪其工作。 客户如是说:

Bazel 提高了 Asana 的所有 build/测试的可靠性、稳定性和速度。由于缓存不正确,我们不再需要进行清理。

Ascend.io

Ascend 是一家位于帕洛阿尔托的初创公司,提供大型数据集分析解决方案。他们的座右铭是大数据很难,我们化繁为简

Beeswax

Beeswax 是一家位于纽约的初创公司,提供实时出价即服务。Bazel 为其基于 Jenkins 的持续集成和部署框架提供支持。Beeswax 非常喜欢 Bazel,因为它速度极快、准确无误,并且在多种语言和平台上都得到了良好的支持。

Braintree

Braintree 是 PayPal 的子公司,专为网站和应用开发支付解决方案。他们使用 Bazel 完成内部构建的各个部分,Paul Gross 甚至发布了关于改用 Bazel 的精彩文章

Canva

Canva 利用 Bazel 管理其庞大的多语言代码库,其中包括 Java、TypeScript、Scala、Python 等。迁移到 Bazel 后,开发者和计算基础架构的效率显著提高,例如,平均 CI 构建时间缩短了 5-6 倍,而且 Bazel 将继续成为该公司快速、可重现且标准化的软件构建的基础。

CarGurus

CarGurus 的使命是打造全球最值得信赖且最透明的汽车市场,并使用 Bazel 构建其多语言单仓库。

Compass

Compass 是一个以技术为驱动的房地产平台。我们组建了一支由房地产、技术和商业专业人员组成的精英团队,力求成为最优质、最值得信赖的求婚者信息来源。

Databricks

Databricks 提供基于 Apache Spark™ 的云端集成工作区。

Databricks 代码库是一个 Monorepo,其中包含为我们的大多数服务提供支持的 Scala 代码、用于前端界面的 JavaScript、用于脚本的 Python、用于配置基础架构的 Jsonnet 等等 [...] 尽管我们的 monorepo 包含一百万行 Scala,但在其中处理代码的过程既快速又快捷。 (在 Databricks 中使用 Bazel 实现快速 Scala 构建

Dataform

Dataform 可为数据团队提供可扩缩的分析功能。他们在单个单仓库中维护一些 NPM 软件包和一个文档网站,并且所有这些工作都是使用 Bazel 完成的。

在迁移到 Bazel 后,他们展现了诸多优势,包括:

  • CI 速度更快:我们启用了远程 build 缓存,这将整个代码库的平均构建时间从 30 分钟缩短到了 5 分钟。
  • 本地开发改进:不会再有忘记运行的随机 bash 脚本,增量构建时间从几分钟缩短至几秒钟
  • 开发者设置时间:新工程师只需使用 3 个依赖项(bazel、docker 和 JVM)即可构建所有代码。我们团队最近加入的一位工程师,在一部全新的空白笔记本电脑上,用不到 30 分钟就构建了我们所有的代码

Deep Silver FISHLABS

Deep Silver FISHLABS 是一家高端 3D 游戏开发商。他们将 Bazel 与 C++/Python/Go/C 搭配使用,以构建其内部构建工具,尤其是烘焙和部署所有 3D 资源。

Dropbox

在 Dropbox,Bazel 是我们分布式构建和测试环境的关键组件。我们使用 Bazel 将 TypeScript/Python/Go/C/Rust 组合成可靠的正式版。

Engel & Völkers

Engel &Völkers AG 是一家德国私营公司,通过一系列特许经营办公室提供房地产交易相关的服务。

我们的一个内部项目的编译时间从 11 分钟缩短到了大约 1 分钟,这是一个令人印象深刻的成就,我们目前正致力于将 Bazel 引入更多项目。(试用 Google Cloud Build 和 Bazel

Etsy

Etsy 是一个电子商务网站,主营手工或复古商品和用品,以及独特的工厂制造商品。

他们使用 Bazel 构建和测试其基于 Java 的搜索平台。Bazel 会为裸机服务器和可重复的 Docker 映像生成软件包。

Evertz.io

Evertz.io 是一个多租户、无服务器 SaaS 平台,由 Evertz Microsystems 打造,可面向全球广播媒体行业提供经济高效的多区域服务。

该网站是使用 Angular 和 Bazel 工作流完全构建和部署的(源代码)。

FINDMINE

FINDMINE 是一项面向零售业的自动化技术,可利用机器学习来扩展目前手动且繁琐的商品挑选流程。我们使用 Bazel 机械化了整个 Python 软件包的构建、测试和部署过程。

Flexport

Flexport 是一家依托技术的全球货运代理公司,我们的使命是让所有人都能更轻松地进行全球贸易。在 Flexport,我们使用 Bazel 构建/测试 Java/JavaScript 服务和客户端库,并根据 protobuf 定义生成 Java 和 Ruby 代码。了解我们如何使用 Bazel 隔离运行单独的 JUnit 5 测试。

Google

Bazel 的设计旨在能够根据 Google 的需求进行扩展,并满足 Google 对可重现性和平台/语言支持的要求。Google 的所有软件都是使用 Bazel 构建的。Google 每天都会使用 Bazel 及其规则进行数百万次构建。

GRAKN.AI

GRAKN AI 徽标

Grakn 是一种数据库技术,可作为智能系统的知识库基础。Grakn 允许智能系统将复杂的数据集解读为可以进行逻辑推理的单一知识体。借助 Bazel,@graknlabs 团队能够构建高度协调的 CI 和分发流水线,以管理多种语言的多个代码库,并无缝部署到众多平台。

华为

Huawei Technologies 在约 30 个项目中使用 Bazel,这些项目是 Java/Scala/Go 项目,除了 Go 项目外,其他项目最初都是由 Maven 构建的。我们编写了一个简单的工具,用于将 Maven 构建的项目转换为 Bazel 构建的项目。未来越来越多的项目将使用 Bazel。

IMC Trading

IMC 是一家总部位于阿姆斯特丹的全球自营交易公司和做市商。我们使用 Bazel 持续构建和测试 Java/C++/Python/SystemVerilog 项目。

Improbable.io

Improbable.io 开发了 SpatialOS,这是一个分布式操作系统,可用于创建包含数百万个复杂实体的大型模拟。

Interaxon

InteraXon 是一家脑电控制计算公司,致力于打造硬件和软件平台,将脑电波转换为数字信号。

Jupiter

Jupiter 是一家每周提供杂货和日用必需品配送服务的公司。

他们在后端代码中使用 Bazel,专门使用远程缓存将 proto 和 Kotlin 编译为 JVM 二进制文件。(来源

Just

Just 是一家总部位于挪威的企业金融科技公司,致力于打造软件解决方案,从根本上改变全球企业财务主管管理风险和流动性的方式。他们的整个应用堆栈都是使用 Bazel 构建的。

Kitty Hawk Corporation

Kitty Hawk Corporation 是一家生产电动飞机的美国飞机制造商。他们将 Bazel 与 Haskell 和 Scala 规则搭配使用。

Line

Line 是一款即时通讯应用,是日本最受欢迎的即时通讯应用。他们在代码库中使用 Bazel,该代码库约为 60% 的 Swift 和 40% 的 C/C++/Objective-C/Objective-C++(来源)。

改用 Bazel 后,我们能够在构建时间方面获得巨大改进。这显著缩短了质量检查周期。向测试人员分发新 build 不再意味着需要再等待一小时才能完成构建和测试。(使用 Bazel 提升 LINE for iOS 的构建性能

LingoChamp

LingoChamp 为英语学习者提供专业解决方案。我们为 Go、Java 和 Python 项目使用 Bazel。

LinkedIn

LinkedIn 是微软的子公司,是全球最大的职业社交网络。LinkedIn 使用 Bazel 来构建自己的 iOS 应用。

Lucid 软件

Lucid Software 是视觉协作领域的佼佼者,帮助团队了解并构建从创意变为现实的未来。借助 Lucid 的产品(LucidchartLucidsparkLucidscale),团队可以围绕共同愿景达成一致、阐明复杂性,并无论身在何处都能直观地协作。

Lucid 使用 Bazel 构建了数百万行 Scala 和 TypeScript。 迁移到 Bazel 大大加快了构建速度,减少了对构建环境的外部依赖项,并简化了开发者对构建系统的使用体验。Bazel 提高了 Lucid 的开发者工作效率,并实现了进一步的发展。

Lyft

Lyft 在其 iOS(源代码)和 Android 应用中使用 Bazel。

Makani

Makani 现已成为 Google 的子公司,该公司开发风筝发电装置,并使用 Bazel 构建其软件(包括嵌入式 C++ 软件)。

Meetup

Meetup 是一个在线社交网络门户,可用于促进线下群组会议。Meetup 工程团队为 rules_scala 做出了贡献,并负责维护 rules_avrorules_openapi

Nvidia

在 Nvidia,我们一直在使用 dazel(docker bazel) 来解决 bazel 的某些 Python 缺点。所有其他内容均在常规 Bazel 中运行(主要是 Go / Scala/ C++/ Cuda)(源代码

Peloton 技术

Peloton Technology 是一家自动驾驶车辆技术公司,致力于解决卡车事故和燃料消耗问题。他们使用 Bazel 为汽车安全系统实现可靠的 build

Pinterest

Pinterest 是全球创意目录。他们使用 Bazel 构建各种后端服务 (Java/C++) 和 iOS 应用 (Objective-C/C++)。

我们发现 Bazel 最适合我们的目标,它能够为性能提升一个数量级、消除构建环境中的可变性以及逐步采用奠定基础。因此,我们现在使用 Bazel 发布所有 iOS 版本。在 Pinterest 开发快速可靠的 iOS build

PubRef

PubRef 是一个新兴的科学出版平台。他们将 Bazel 与 rules_closure 搭配使用来构建前端,使用原生 Java 规则构建主要后端,使用 rules_gorules_noderules_kotlin 构建各种后端服务。rules_protobuf 用于协助后端服务之间基于 gRPC 的通信。PubRef.org 位于科罗拉多州博尔德市。

Redfin

Redfin 是一家新一代房地产经纪公司,拥有全方位服务的本地代理。他们使用 Bazel 构建和部署网站以及各种后端服务。

由于转化主要发生在我们之后,因此效果有了很大的改善!我们的 CI build 速度更快(快了很多:以前需要 40-90 分钟,现在开发 build 平均需要 5-6 分钟)。可靠性也要高得多。这很难量化,但从将无法解释的构建失败视为“只是偶然发生”的现象,转变为将其视为需要解决的实际问题,这让我们进入了一个可靠性不断提升的良性循环。(我们从 Maven 改用 Bazel,构建速度提高了 10 倍

仪式

Ritual 是一款移动式自提应用,可将餐厅与客户联系起来,为他们提供一款简单又省时的工具,让他们无需等待即可获得所需的食品和饮料。Ritual 将 Bazel 用于其后端服务。

快拍

Snapchat 即时通讯应用的开发者 Snap 已于 2020 年从 Buck 迁移到 Bazel(来源)。如需详细了解他们的流程,请参阅他们的工程博客

Stripe

Stripe 提供移动支付解决方案。他们是 Bazel Scala 规则的主要维护者。

Tinder

Tinder 于 2021 年将其 iOS 应用从 CocoaPods 迁移到 Bazel(来源)。

Tink

Tink 是一家欧洲金融技术公司,致力于打造连接欧洲银行的最佳方式。

他们使用 Bazel 通过 polyglot monorepo 构建后端服务。Tink 的工程师正在组织 bazel build //stockholm/... 聚会小组。

Tokopedia

Tokopedia 是一家专门从事电子商务的印度尼西亚科技公司,该平台的月活跃用户数超过 9000 万,入驻商家数超过 700 万。

他们撰写了Tokopedia 如何将 iOS 构建时间缩短了 1000%一文,介绍了 Bazel 如何加快构建速度。使用 Bazel 的构建时长从 55 分钟缩短到 10 分钟,使用远程缓存将构建时长缩短到 5 分钟。

Twitter

Twitter 决定将 Bazel 作为其主要构建工具,从 Pants 迁移过来(来源)。

Two Sigma

Two Sigma 是一家总部位于纽约的科技公司,致力于从全球数据中发掘价值。

优步

Uber 是一家叫车公司。Uber 的 Go monorepo 拥有 900 名活跃开发者,很可能是使用 Bazel 的最大 Go 代码库之一。如需详细了解他们的经验,请参阅使用 Bazel 构建 Uber 的 Go Monorepo一文。

Uber Advanced Technologies Group

Uber 先进技术团队专注于 Uber 的自动驾驶车辆业务,包括卡车/货运和自动驾驶共享车辆。组织使用 Bazel 作为其主要构建系统。

Vistar Media

Vistar Media 是一个广告平台,可让品牌根据消费者在现实世界中的行为来触达他们。该公司的工程团队主要位于费城,他们使用 Bazel 进行构建和部署,以加快测试速度,并整合使用各种不同技术编写的代码库。

VMware

VMware 使用 Bazel 生成确定性、可靠的 build,同时为客户开发创新产品。

Wix

Wix 是一个基于云的 Web 开发平台。其后端使用 Java 和 Scala 代码。它们将远程执行与 Google Cloud Build 搭配使用。

我们发现,使用 bazel Remote Build Execution 运行时,干净 build 速度提高了约 5 倍。该工具在将 build/test 操作分派给工作器农场时,会利用 bazel 强大的 build/test 并行处理功能。由于利用了 bazel 的激进缓存机制,平均构建时间缩短了 10 倍以上。 (从 Maven 或 Gradle 迁移到 Bazel?您应该问自己的 5 个关键问题

Zenly

Zenly 是亲友的实时地图,这是最有趣的见面方式,或者只是了解最新动态!这样,即使分隔两地,也能感受到彼此的陪伴。


使用 Bazel 的开源项目

Abseil

Abseil 是一个开源 C++ 代码集合(兼容 C++11),旨在扩充 C++ 标准库。

Angular

Angular 是一款广受欢迎的 Web 框架。Angular 是使用 Bazel 构建的

Apollo

Apollo 是一款高性能、灵活的架构,可加快自动驾驶车辆的开发、测试和部署速度。

brpc

一种在百度内部使用的工业级 RPC 框架,具有 100 万多个实例(不包括客户端)和数千种服务,在百度内部称为“baidu-rpc”。

cert-manager

cert-manager 是一种 Kubernetes 插件,可以自动管理和颁发来自各种颁发源的 TLS 证书。它会定期确保证书有效且处于最新状态,并尝试在证书到期前适时续订证书。

CallBuilder

Java 代码生成器,可让您通过编写一个函数来创建构建器。

CPPItertools

一个 C++ 库,提供基于范围的 for 循环插件,灵感来自 Python 内建函数和 itertools 库。与 itertools 和 Python3 内置函数一样,此库会尽可能使用延迟求值。

Copybara

Copybara 是一款用于在代码库之间转换和移动代码的工具。

Dagger

Dagger 是一个适用于 Java 和 Android 的完全静态编译时依赖项注入框架。

DAML

DAML 是一种智能合约语言,可用于在安全且注重隐私保护的运行时环境中构建可满足未来需求的分布式应用。

DeepMind Lab

一个可自定义的 3D 平台,用于进行基于代理的 AI 研究。

Drake

Drake 是一个 C++ 工具箱,由 MIT 发起,目前由丰田研究所主导。该工具包包含一系列工具,用于分析我们的机器人的动力学并为其构建控制系统,其重点是基于优化的设计/分析。

Envoy

C++ L7 代理和通信总线

容易出错

将常见的 Java 错误捕获为编译时错误。(正在向 Bazel 迁移。)

Extensible Service Proxy

可扩展服务代理 (ESP) 是一种代理,可为 JSON/REST 或 gRPC API 服务启用 API 管理功能。目前的实现基于 NGINX HTTP 反向代理服务器。

FFruit

FFruit 是一款免费的开源 Android 应用,可用于热门服务 Falling Fruit

Gerrit Code Review

Gerrit 是一款适用于基于 Git 的项目的代码审核和项目管理工具。

Gitiles

Gitiles 是一个基于 JGit 的 Git 代码库简单浏览器。

Grakn

Grakn (https://grakn.ai/) 是一种知识图谱引擎,用于整理复杂的数据网络并使其可查询。

GRPC

一种与语言和平台无关的远程过程调用系统。(Bazel 是一个受支持的构建系统,但不是主要的构建系统。)

gVisor

gVisor 是一个容器运行时沙盒。

Guetzli

Guetzli 是一种 JPEG 编码器,旨在以高视觉质量实现出色的压缩密度。

Gulava

这是一个 Java 代码生成器,可让您编写 Prolog 风格的谓词,并在普通 Java 代码中无缝使用它们。

Heron

Heron 是 Twitter 推出的实时分布式容错流处理引擎。

爵士乐

Jazzer 是一款适用于 Java 和其他基于 JVM 的语言的模糊测试工具,可与 JUnit 5 集成。

JGit

JGit 是一个轻量级的纯 Java 库,用于实现 Git 版本控制系统。

Jsonnet

一种用于 JSON 的优雅、正式指定的配置生成语言。(Bazel 是受支持的构建系统。)

Kubernetes

Kubernetes 是一个开源系统,用于跨多个主机管理容器化应用,为应用的部署、维护和扩缩提供基本机制。

Kythe

用于构建可与代码搭配使用的工具的生态系统。

Nomulus

Google App Engine 上的顶级域名注册服务。

ONOS:开放式网络操作系统

ONOS 是唯一支持从传统“旧场”网络过渡到 SDN“新场”网络的 SDN 控制器平台。这为网络运营商提供了令人兴奋的新功能,并颠覆了部署和运营成本。

适用于 Java 的 PetitParser

编程语言的语法通常是静态指定的。它们难以组合和重复使用,因为其不可避免地会出现模棱两可的情况。PetitParser 结合了无扫描器解析、解析器组合器、解析表达式语法和压缩解析器中的想法,将语法和解析器建模为可动态重新配置的对象。

PlaidML

PlaidML 是一个框架,可让深度学习在任何地方都发挥作用。

Project V

Project V 是一组工具,可帮助您在互联网上构建自己的隐私网络。

Prysmatic Labs 以太坊 2.0 实现

Prysm 是适用于以太坊 2.0(一种基于区块链的分布式计算平台)的分片客户端。

Ray 是一个灵活、高性能的分布式执行框架。

弹性

Resty 是一个适用于 Go 的简单 HTTP 和 REST 客户端库(灵感来自 Rubyrest-client)。

粗略时效

Roughtime 是一个旨在提供安全时间同步的项目。

Selenium

Selenium 是一个用于测试 Web 应用的可移植框架。

语义

Semantic 是一个 Haskell 库和命令行工具,用于解析、分析和比较源代码。它由 GitHub 开发(例如用于代码导航)。

已投放

Served 是一个 C++ 库,用于构建高性能 RESTful Web 服务器。

Sonnet

Sonnet 是基于 TensorFlow 构建的库,用于构建复杂的神经网络。

Sorbet

Sorbet 是一款适用于 Ruby 子集的快速、强大的类型检查器。它可以扩展到包含数百万行代码的代码库,并且可以逐步采用。

Spotify

Spotify 使用 Bazel 构建 iOS 和 Android 应用(源代码)。

Tink

Tink 是一个多语言跨平台开源库,提供安全、易于正确使用且难以滥用的加密 API。

TensorFlow

一个面向机器智能领域的开源软件库。

Turbo Santa

独立于平台的 GameBoy 模拟器。

Wycheproof

Project Wycheproof 会针对已知攻击测试加密库。

XIOSim

XIOSim 是 x86 架构的详细用户模式微架构模拟器。

ZhihuDailyPurify

ZhihuDailyPurify 是中国的问答式网站“知乎日”的轻量版。