bazel学习系列章节汇总

本文详细介绍了Bazel的安装过程、工程构建原理,包括基于任务的调度模型、远程缓存和远程执行技术。还探讨了外部依赖管理和高效使用策略,以及使用中遇到的问题和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bazel介绍以及其发展历史

见链接:bazel介绍以及其发展历史_m0_74043383的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_74043383/article/details/132635226

bazel安装

见链接:bazel安装_m0_74043383的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_74043383/article/details/132635380

bazel工程介绍和demo构建

见链接:bazel工程介绍和demo构建_m0_74043383的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_74043383/article/details/132635520

bazel构建原理

见链接:bazel构建原理_m0_74043383的博客-CSDN博客传统构建系统有很多是基于任务的,例如 Ant,Maven,Gradle。用户可以自定义"任务"(Task),例如执行一段 shell 脚本。用户配置它们的依赖关系,构建系统则按照顺序调度。基于 Task 的调度模型这种模式对使用者很友好,他可以专注任务的定义,而不用关心复杂的调度逻辑。构建系统通常给予任务制定者极大的"权利",比如 Gradle 允许用户用 Java 代码编写任务,原则上可以做任何事。https://blog.csdn.net/m0_74043383/article/details/132635658

bazel远程缓存(Remote Cache)

见链接:bazel远程缓存(Remote Cache)_m0_74043383的博客-CSDN博客您可以将服务器设置为构建输出(即这些操作输出)的远程缓存。这些输出由输出文件名列表及其内容的哈希值组成。借助远程缓存,您可以重复使用其他用户的 build 中的构建输出,而不是在本地构建每个新输出。增量构建极大的提升了本地研发的构建效率,但有些场合它的效果不是很好,例如 CI 环境通常采用“干净”的容器,此时没有上一次的构建数据,只能全量构建。即使是本地研发,如果从远端同步代码时修改了全局参数,也会导致增量构建失效。https://blog.csdn.net/m0_74043383/article/details/132635783

bazel远程构建(Remote Execution)

见链接:bazel远程构建(Remote Execution)_m0_74043383的博客-CSDN博客既然 ActionResult 可以被不同的 Bazel 任务共享,说明 ActionResult 和 Action 在哪里执行并没有关系。因此,Bazel 在构建时,可以把 Action 发送给另一台服务器执行,对方执行完,向 CAS 上传 ActionResult,然后本地再下载。这种做法减少了本地执行 Action 的开销,使得我们设置更高的构建并发度。https://blog.csdn.net/m0_74043383/article/details/132636013

bazel外部依赖管理

见链接:bazel外部依赖管理_m0_74043383的博客-CSDN博客Bazel 会将下载的依赖,以 CAS 的方式存储在内置的 repository_cache 目录下。除此之外,Bazel 也支持通过 1.0.0 这样的 SerVer 版本号来声明依赖,这是 Bazel6.0 版本加入的功能,也是官方推荐使用的,具体做法可以查看官网 相关部分。Bazel 认为通过 checksum 机制,外部依赖应该是全局共享的,因此无论你的本地有多少个工程,哪怕使用的是不同的 Bazel 版本,都可以共享一份外部依赖。现在让我们看看 Bazel 是如何管理外部依赖的。https://blog.csdn.net/m0_74043383/article/details/132636036

bazel高效使用和调优

见链接:bazel高效使用和调优_m0_74043383的博客-CSDN博客Bazel 为了正确性和高性能,做了很多优秀的设计,那么我们如何正确的使用这些能力,让我们的构建性能“起飞”呢, 我们将从本地研发和 CI pipeline 两种场景进行分析。https://blog.csdn.net/m0_74043383/article/details/132636061

bazel使用中存在的问题

见链接:bazel使用中存在的问题_m0_74043383的博客-CSDN博客4、提取kernel中的bazel命令,本地重复编译两次,第二次可以全部命中本地缓存,秒级构建。但清理本地缓存,只使用远端缓存,本地重复编译两次,第二次无法全部远端缓存。3、$HOME/.bazelrc中指定分析日志保存文件用于分析。但由于无法指定相对路径,同一工程中全部bazel分析结果都保存在kernel根路径下,造成覆盖。1、Action 详情二进制文件解析为文本文件时报错,无法进一步比较分析导致缓存不命中的原因。2、远端缓存全部命中时间收益不明显 ---需分析是否为网络原因。https://blog.csdn.net/m0_74043383/article/details/132636137

bazel相关资料来源

见链接:bazel相关资料来源_m0_74043383的博客-CSDN博客bazel官方中文文档 bazel官方中文文档网址2Bazel学习笔记如何评价 Google 开源的 Bazel ?Bazel使用了解编译构建工具-bazel如何挖掘 Bazel 的极致性能 如何挖掘 Bazel 的极致性能_其它网站Bazel入门(4. Remote Cache)Google Open Source Live "Bazel day"Bazel 和 AOSP 介绍https://blog.csdn.net/m0_74043383/article/details/132636172

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_74043383

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值