本页列出了已知使用 Bazel 的公司和开源软件 (OSS) 项目。 这并不构成认可。
使用 Bazel 的公司
acqio
Acqio 是一家金融科技公司,为中小型商家提供支付产品和服务。Acqio 有几个单体代码库,并使用 Bazel 和 Kubernetes 来交付快速可靠的微服务。
Adobe
Adobe 已发布用于持续的、由 GitOps 驱动的 Kubernetes 部署的 Bazel 规则。
Asana
Asana 是一款旨在帮助团队跟踪工作的 Web 应用和移动应用。 客户如是说:
Bazel 提高了 Asana 中所有 build/测试的可靠性、稳定性和速度。由于缓存不正确,我们不再需要清理。
Ascend.io
Ascend 是一家 Palo Alto 初创公司,提供大型数据集分析解决方案。他们的座右铭是“大数据很难。我们让一切变得简单。
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
Compass 是一个技术驱动型房地产平台。我们拥有一支由房地产、技术和商业专业人士组成的精英团队,致力于成为购房者最信赖的优质资源。
Databricks
Databricks 提供基于 Apache Spark™ 的云端集成式工作区。
Databricks 代码库是一个 Monorepo,其中包含为我们的大部分服务提供支持的 Scala 代码、用于前端界面的 JavaScript、用于脚本的 Python、用于配置我们基础设施的 Jsonnet 等等 [...] 尽管我们的 Monorepo 包含数百万行 Scala 代码,但处理其中的代码非常快速流畅。 (Databricks 使用 Bazel 实现快速 Scala 构建)
Dataform
Dataform 为数据团队提供可扩缩的分析功能。他们在一个单体代码库中维护少量 NPM 软件包和一个文档网站,并且所有这些工作都是通过 Bazel 完成的。
迁移到 Bazel 后,他们报告了许多好处,包括:
- 更快的 CI:我们启用了远程 build 缓存,这使我们的平均 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 测试。
Foursquare
Foursquare 的使命是打造可在数字空间和实体场所之间架起有意义桥梁的技术。我们使用 Bazel 管理数百万行主要为 Scala 和 Python 的代码,这些代码可为数据密集型应用(包括复杂的代码生成和容器构建流程)提供支持。
GermanTechJobs
Bazel 将我们的工作流程简化了 10 倍,并实现了大规模交付功能。
Bazel 的设计旨在满足 Google 的规模需求,并符合 Google 在可重现性和平台/语言支持方面的要求。Google 的所有软件都是使用 Bazel 构建的。Google 每天都会使用 Bazel 及其规则进行数百万次构建。
华为
华为技术在约 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 是一家企业金融技术公司,总部位于挪威,致力于打造软件解决方案,以转变全球企业财务主管管理风险和流动性的方式。他们的整个应用栈都是使用 Bazel 构建的。
Line
Line 提供了一款即时通讯应用,是日本最受欢迎的通讯应用。 他们在其代码库中使用 Bazel,该代码库大约由 60% 的 Swift 和 40% 的 C/C++/Objective-C/Objective-C++ 组成(来源)。
改用 Bazel 后,我们能够大幅缩短 build 时间。这显著缩短了 QA 期间的周转时间。向测试人员分发新 build 不再意味着需要再等待一个小时才能完成构建和测试。(使用 Bazel 提升 LINE 的 iOS 版应用的 build 性能)
LingoChamp
LingoChamp 为英语学习者提供专业解决方案。我们使用 Bazel 来管理 Go、Java 和 Python 项目。
LinkedIn 是 Microsoft 的子公司,也是全球最大的职业社交网络。LinkedIn 使用 Bazel 构建其 iOS 应用。
Lucid Software
Lucid Software 是可视化协作领域的领导者,可帮助团队将创意转化为现实,从而看到并构建未来。借助 Lucidchart、Lucidspark 和 Lucidscale 等产品,团队可以围绕共同愿景达成一致,化繁为简,并以直观的方式进行协作,无论团队成员身在何处。
Lucid 使用 Bazel 构建数百万行的 Scala 和 TypeScript 代码。迁移到 Bazel 后,其构建速度大幅提升,对构建环境的外部依赖项减少,并且简化了开发者使用构建系统的体验。Bazel 提高了 Lucid 的开发者工作效率,并推动了进一步的增长。
Lyft
Lyft 正在使用 Bazel 构建其 iOS(来源)和 Android 应用。
Meetup
Meetup 是一个在线社交网络门户,可促成线下群组会议。 Meetup 工程团队为 rules_scala 做出了贡献,并且是 rules_avro 和 rules_openapi 的维护者。
Nvidia
在 Nvidia,我们一直使用 dazel(docker bazel) for python 来解决 bazel 的一些 python 缺点。其他所有内容都在正常的 Bazel 中运行(主要是 Go / Scala/ C++/ Cuda)(来源)
Peloton 技术
Peloton Technology 是一家自动化车辆技术公司,致力于解决卡车事故和燃油使用问题。他们使用 Bazel 为汽车安全系统实现可靠的 build。
Pigweed
Pigweed 是一项开源解决方案,可帮助大型团队持续、稳健、快速地开发嵌入式产品。Pigweed 已在数百万部设备中发布,包括 Google 的 Pixel 设备套件、Nest 温控器、卫星和自动驾驶飞行器。
Pigweed 使用 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 分钟)。可靠性也大大提高。虽然这难以量化,但我们已从“只是发生”的无法解释的 build 失败转变为将此类失败视为需要解决的实际问题,这使我们进入了可靠性不断提高的良性循环。 (我们从 Maven 改用 Bazel,构建速度提高了 10 倍)
Ritual
Ritual 是一款移动自提应用,可将餐厅与顾客联系起来,提供简单省时的工具,让顾客无需等待即可获得自己想要的食物和饮料。Ritual 将 Bazel 用于其后端服务。
Snap
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 build 时间缩短 10 倍》一文,其中介绍了 Bazel 如何加快了他们的 build 速度。通过使用 Bazel,构建时长从 55 分钟缩短到 10 分钟,而使用远程缓存后,时长进一步缩短到 5 分钟。
Trunk.io
Trunk 是一家总部位于旧金山的公司,获得了 Andreessen Horowitz 和 Initialized Capital 的支持。Trunk 提供强大的拉取请求合并服务,并为 Bazel 构建系统提供一流的支持。通过利用 Bazel 对代码库中依赖项的了解,Trunk 的合并服务可智能创建并行合并通道,从而允许同时测试和合并独立更改。
Trunk 的内部单体代码库构建现代 C++ 20 和 TypeScript,同时利用 Bazel 图知识来选择性地测试和合并代码。
Twitter 已决定从 Pants 迁移到 Bazel 作为其主要构建工具(来源)。
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 Advanced Technologies Group 专注于 Uber 的自动驾驶汽车业务,包括卡车/货运和自动驾驶网约车。组织使用 Bazel 作为其主要构建系统。
Vistar Media
Vistar Media 是一家广告平台,可让品牌根据消费者的实体世界行为来触达他们。他们的工程团队主要位于费城,使用 Bazel 进行构建、部署,以加快测试速度,并整合使用各种不同技术编写的代码库。
VMware
VMware 在为客户开发创新产品时,使用 Bazel 来生成确定性、可靠的 build。
Wix
Wix 是一个基于云的 Web 开发平台。其后端使用 Java 和 Scala 代码。它们使用 Google Cloud Build 进行远程执行。
我们发现,在运行 bazel 远程执行时,干净构建的速度大约快了 5 倍,因为当它将构建/测试操作分派给工作器群时,会利用 bazel 出色的构建/测试并行功能。由于利用了 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++ 库,提供受 Python 内置函数和 itertools 库启发的基于范围的 for 循环插件。与 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
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 控制器平台。这为网络运营商带来了令人兴奋的新功能,以及颠覆性的部署和运营成本点。
适用于 Java 的 PetitParser
编程语言的语法传统上是静态指定的。由于不可避免地会出现歧义,因此很难组合和重复使用。 PetitParser 结合了无扫描器解析、解析器组合器、解析表达式语法和 Packrat 解析器的思想,将语法和解析器建模为可动态重新配置的对象。
PlaidML
PlaidML 是一个框架,可让深度学习在任何地方都能正常运行。
Project V
Project V 是一套工具,可帮助您在互联网上构建自己的隐私网络。
Prysmatic Labs Ethereum 2.0 实现
Prysm 是以太坊 2.0(一种基于区块链的分布式计算平台)的分片客户端。
Ray
Ray 是一种灵活的高性能分布式执行框架。
Resty
Resty 是一个适用于 Go 的简单 HTTP 和 REST 客户端库(灵感源自 Ruby rest-client)。
Roughtime
Roughtime 是一个旨在提供安全时间同步的项目。
硒
Selenium 是一个用于测试 Web 应用的可移植框架。
语义
Semantic 是一个 Haskell 库和命令行工具,用于解析、分析和比较源代码。它由 GitHub 开发(例如用于代码导航)。
已投放
Served 是一个用于构建高性能 RESTful Web 服务器的 C++ 库。
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 是知乎日报的轻量级版本,知乎日报是一个中文问答网站。