使用Google Bazel构建混合语言应用

写在前面

自从Google开源了Bazel之后,国内外的码农们开展了各种口水大战,褒贬不一。写这篇文章之前我已经明白让程序员去接触新技术是有多困难,作为科普文章吧。

Bazel是什么

Bazel是通用构建工具,可以理解为CMake, maven, gradle同类的构建工具。不同之处在于它的构建速度和通用性。目前可以构建大部分语言项目,使得构建混合语言开发的项目变得很简单。

如何使用Bazel构建混合语言应用

现在给出一个具体的例子,是我在使用Bazel之后总结出来的最佳实践。 这是一个正在开发的IM开源项目:Pumpkin IM
我们都知道开发IM项目,模块非常多,其中包含各种语言的SDK以及服务端的各种混合语言开发,项目源码管理麻烦很多。

Bazel项目最佳实践

看一个IM SDK仓库的结构: Pumpkin Android

CI系统集成

Pumpkin使用的是Travis, 其中包含了Linux和MacOS bazel的安装以及Android SDK环境自动初始化。

文档管理

推荐使用Facebook Docusaurus, Pumpkin IM就是使用的这个。需要关注的问题是项目模化之后如何将文档统一管理。由于Pumpkin IM并不支持Windows开发,所以可以使用软链接来处理。 Docusaurus默认使用的文档路径是当前仓库的docs目录,可以在每一个模块仓库下面创建一个docs目录,然后链接到主仓库下面。稍微解释一下这里。当项目复杂了之后我们需要做版本管理,所以只在Pumpkin这个项目做管理,其他模块都是submodule, 所以docs目录将会是:

    docs/
        android/          => pumpkin-android/docs
        apple/             => pumpkin-apple/docs
        cloud/             => pumpkin-cloud/docs
        protocol/         => pumpkin-protocol/docs
        ....
    website/

这样就只需要在pumpkin项目提供一个GitHub Landing page就可以了。

猜你喜欢

转载自www.cnblogs.com/bluearty/p/10269981.html