本页列出了已知使用 Bazel 的公司和开源软件 (OSS) 项目。这并不构成对其的认可。
使用 Bazel 的公司
acqio
Acqio 是一家金融科技公司,为中小型商家提供付款产品和服务。Acqio 拥有一些单 repo,并将 Bazel 与 Kubernetes 搭配使用,以提供快速可靠的微服务。
Adobe
Adobe 已发布适用于 GitOps 驱动的持续 Kubernetes 部署的 Bazel 规则。
Asana
Asana 是一款 Web 和移动应用,旨在帮助团队跟踪其工作。 客户如是说:
Bazel 提高了 Asana 的所有 build/测试的可靠性、稳定性和速度。由于缓存不正确,我们不再需要进行清理。
Ascend.io
Ascend 是一家位于帕洛阿尔托的初创公司,提供大型数据集分析解决方案。他们的口号是:大数据很难。我们会为您提供便利。
ASML
ASML 是半导体行业的创新领导者。我们为芯片制造商提供所需的一切资源(硬件、软件和服务),以便他们通过光刻技术在硅片上批量生产图案。
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 是一个以技术为驱动的房地产平台。我们拥有由房地产、技术和商务专业人士组成的精英团队,致力于成为购房者的最佳且最值得信赖的信息来源。
Databricks
Databricks 提供基于 Apache Spark™ 的云端集成工作区。
Databricks 代码库是一个单仓库,包含为大多数服务提供支持的 Scala 代码、用于前端界面的 JavaScript、用于脚本编写的 Python、用于配置基础架构的 Jsonnet 等 [...] 尽管我们的单仓库包含 100 万行 Scala 代码,但处理其中的代码非常快速。 (在 Databricks 中使用 Bazel 实现快速 Scala 构建)
Dataform
Dataform 可为数据团队提供可扩缩的分析功能。他们在单个单仓库中维护一些 NPM 软件包和一个文档网站,并且所有这些工作都是使用 Bazel 完成的。
迁移到 Bazel 后,他们获得了诸多好处,包括:
- CI 速度更快:我们启用了远程 build 缓存,这将整个代码库的平均构建时间从 30 分钟缩短到了 5 分钟。
- 改进了本地开发:不再有您忘记运行的随机 Bash 脚本,增量 build 从几分钟缩短到几秒
- 开发者设置时间:新工程师只需 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 测试。
Foursquare
Foursquare 的使命是利用技术在数字空间和实体空间之间建立有意义的桥梁。我们使用 Bazel 管理数百万行主要由 Scala 和 Python 代码组成的代码,这些代码为数据密集型应用(包括复杂的代码生成和容器构建流程)提供支持。
GermanTechJobs
Bazel 使我们的工作流简化了 10 倍,并支持大规模交付功能。
Bazel 的设计旨在能够根据 Google 的需求进行扩展,并满足 Google 对可重现性和平台/语言支持的要求。Google 的所有软件都是使用 Bazel 构建的。Google 每天都会使用 Bazel 及其规则进行数百万次构建。
华为
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 构建的。
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 使用 Bazel 构建 iOS 应用。
Lucid Software
Lucid Software 是可视化协作领域的领军者,可帮助团队将想法变为现实。借助 Lucidchart、Lucidspark 和 Lucidscale 等产品,团队可以围绕共同愿景达成一致、阐明复杂性,并无论身在何处都能直观地协作。
Lucid 使用 Bazel 构建数百万行 Scala 和 TypeScript 代码。迁移到 Bazel 大大加快了构建速度,减少了对构建环境的外部依赖项,并简化了开发者对构建系统的使用体验。Bazel 提高了 Lucid 的开发者工作效率,并为进一步增长打开了局面。
Lyft
Lyft 在其 iOS(源代码)和 Android 应用中使用 Bazel。
Meetup
Meetup 是一个在线社交网络门户,可帮助用户举办线下小组会议。Meetup 工程团队为 rules_scala 做出了贡献,并负责维护 rules_avro 和 rules_openapi。
Nvidia
在 Nvidia,我们一直在使用 dazel(docker bazel) 来解决 bazel 的某些 Python 缺点。所有其他内容均在常规 Bazel 中运行(主要是 Go / Scala/ C++/ Cuda)(源代码)
Peloton Technology
Peloton Technology 是一家自动驾驶车辆技术公司,致力于解决卡车事故和燃料消耗问题。他们使用 Bazel 为汽车安全系统实现可靠的 build。
Pigweed
Pigweed 是一个开源解决方案,可帮助大型团队持续、稳健且快速地开发嵌入式产品。Pigweed 已搭载在数百万部设备中,包括 Google 的 Pixel 设备套件、Nest 温控器、卫星和自主飞行无人机。
Pigweed 使用 Bazel 作为其主要构建系统。适用于嵌入式设备的 Bazel 博文介绍了我们为何认为 Bazel 是嵌入式项目的绝佳构建系统!
Pinterest 是全球创意目录。他们使用 Bazel 构建各种后端服务 (Java/C++) 和 iOS 应用 (Objective-C/C++)。
我们发现 Bazel 最符合我们的目标,即打下基础,以便成倍提升性能、消除构建环境中的不稳定性,并逐步采用。因此,我们现在使用 Bazel 发布所有 iOS 版本。在 Pinterest 上开发快速可靠的 iOS build
PubRef
PubRef 是一个新兴的科学出版平台。他们将 Bazel 与 rules_closure 搭配使用来构建前端,使用原生 Java 规则构建主要后端,使用 rules_go、rules_node 和 rules_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,详情请参阅他们的工程博客。
Tinder
Tinder 在 2021 年将其 iOS 应用从 CocoaPods 迁移到了 Bazel(来源)。
Tink
Tink 是一家欧洲金融科技公司,致力于打造与欧洲各大银行建立联系的最佳方式。
他们使用 Bazel 从多语言单仓库构建后端服务。Tink 的工程师正在组织 bazel build //stockholm/... 聚会小组。
Tokopedia
Tokopedia 是一家专门从事电子商务的印度尼西亚科技公司,该平台的月活跃用户数超过 9000 万,入驻商家数超过 700 万。
他们撰写了Tokopedia 如何将 iOS 构建时间缩短了 1000%一文,介绍了 Bazel 如何加快构建速度。使用 Bazel 后,构建时长从 55 分钟缩短到了 10 分钟,使用远程缓存后,构建时长缩短到了 5 分钟。
Trunk.io
Trunk 是一家位于旧金山的公司,由 Andreessen Horowitz 和 Initialized Capital 提供支持。Trunk 提供强大的拉取请求合并服务,并为 Bazel 构建系统提供一流的支持。利用 Bazel 对代码库中依赖项的理解,Trunk 的合并服务会智能地创建并行合并车道,以便同时测试和合并独立更改。
Trunk 的内部单仓库会构建现代 C++ 20 和 TypeScript,同时利用 Bazel 图知识选择性地测试和合并代码。
Twitter 决定将 Bazel 作为其主要构建工具,从 Pants 迁移过来(来源)。
Two Sigma
Two Sigma 是一家总部位于纽约的科技公司,致力于从全球数据中发掘价值。
TypeDB
TypeDB 是一种数据库技术,可用于直观地对相互关联的数据进行建模。通过其类型论和多态查询语言 TypeQL,您可以使用简单且易于理解的查询(运行速度极快)访问数据。
借助 Bazel,TypeDB 团队能够构建高度协调的 CI 和分发流水线,以管理多种语言的许多代码库,并顺畅地部署到众多平台。TypeDB 团队还发布了用于组装和部署软件发行版的 Bazel 规则。
Uber
Uber 是一家叫车公司。Uber 的 Go 单一代码库拥有 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++ 工具箱,由麻省理工学院发起,目前由丰田研究所主导。这是一个工具集,用于分析机器人的动力学特性并为其构建控制系统,重点是基于优化的设计/分析。
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
Jazzer 是一款适用于 Java 和其他基于 JVM 的语言的模糊测试工具,可与 JUnit 5 集成。
JGit
JGit 是一个轻量级的纯 Java 库,用于实现 Git 版本控制系统。
Jsonnet
一种用于 JSON 的优雅、正式指定的配置生成语言。(Bazel 是受支持的构建系统。)
Kubernetes
Kubernetes 是一个开源系统,用于跨多个主机管理容器化应用,为应用的部署、维护和扩缩提供基本机制。
Kythe
用于构建可与代码搭配使用的工具的生态系统。
Nomulus
Google App Engine 上的顶级域名注册服务。
ONOS:开放网络操作系统
ONOS 是唯一支持从传统“旧场”网络过渡到 SDN“新场”网络的 SDN 控制器平台。这为网络运营商提供了令人兴奋的新功能,并颠覆了部署和运营成本。
PetitParser for Java
编程语言的语法通常是静态指定的。由于不可避免地会出现歧义,因此很难组合和重复使用。PetitParser 结合了无扫描器解析、解析器组合器、解析表达式语法和压缩解析器中的想法,将语法和解析器建模为可动态重新配置的对象。
PlaidML
PlaidML 是一个可让深度学习在任何地方运行的框架。
Project V
Project V 是一组工具,可帮助您在互联网上构建自己的隐私网络。
Prysmatic Labs 以太坊 2.0 为实现平台的测试
Prysm 是适用于以太坊 2.0(一种基于区块链的分布式计算平台)的分片客户端。
Ray
Ray 是一个灵活、高性能的分布式执行框架。
Resty
Resty 是一个适用于 Go 的简单 HTTP 和 REST 客户端库(灵感来自 Ruby rest-client)。
Roughtime
Roughtime 是一个旨在提供安全时间同步的项目。
硒
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 是 Zhihu Daily(中国问答网站)的轻量版。