如何使用 Rebuild 创建可重现的构建环境

Rebuild 允许用户创建和共享不可变的构建环境,并为软件开发增加可预测性。
326 位读者喜欢这篇文章。
3 mistakes to avoid when learning to code in Python

Opensource.com

以可预测和可重复的方式构建现代软件并非易事。大量的软件依赖关系以及隔离冲突组件的需求,在管理构建环境方面提出了诸多挑战。

尽管有许多工具旨在缓解这一挑战,但大多数工具都采取两种方法:要么依赖包管理器来保存和复制包集合,要么使用具有预配置环境的虚拟机或物理机。

这两种方法都有缺陷。包管理器无法为具有冲突构建依赖关系的组件提供单一环境,而单独的机器则很笨重,并且无法提供无缝的用户体验。

为了解决这些问题,我们需要一个系统,该系统能够在同一台机器上管理多个不可变的构建环境;在开发、持续集成 (CI) 和测试中使用相同的环境;在团队成员之间轻松共享环境;并跟踪环境 版本。

我认为 Rebuild 符合这些标准,非常适合为源代码建立构建基础设施。Rebuild 是一个新的开源管理框架,允许用户创建和共享快速、隔离且不可变的构建环境,这些环境可以在本地使用,也可以作为 CI 系统的一部分使用。

以下是如何使用 Rebuild 简化软件开发的方法。

安装客户端

Rebuild 在 RubyGems.org 上可用。其客户端需要 Docker Engine 1.9.1 或更高版本以及 Ruby 2.0.0 或更高版本。

要安装,请执行此命令

gem install rbld

要测试您的安装,请执行此命令

rbld help

搜索现有环境

Rebuild 可以简化嵌入式工具链的使用。默认情况下,Rebuild 配置为与 Docker Hub 作为环境存储库一起使用,我们已经在那里准备好了现成的环境。

Rebuild 的工作流程是:

  1. 在其环境存储库中搜索所需的环境。
  2. 在本地部署环境(每个特定环境版本执行一次)。
  3. 运行 Rebuild。

如果需要,您可以修改、提交和发布修改后的环境到注册表,同时跟踪不同的环境版本。

要搜索环境,请执行此命令

$ rbld search

返回

Searching in /RebuildRepository...

    bb-x15:16-05
    rpi-raspbian:v001

然后,通过输入以下命令将环境部署到本地机器

$ rbld deploy rpi-raspbian:v001

返回

Deploying from /RebuildRepository...
Working: |---=---=---=---=---=---=---=---=---=---=---=---=-|
Successfully deployed rpi-raspbian:v001

接下来,使用 Rebuild 编译您的代码。进入包含代码的目录并运行

$ rbld run rpi-raspbian:v001 -- make

当然,您可以使用任何其他构建代码的命令。您还可以在交互模式下使用您的环境。只需运行以下命令

$ rbld run rpi-raspbian:v001

然后从环境内部执行必要的命令。Rebuild 将处理位于本地文件系统上的构建结果的文件权限和所有权。

创建环境

上面的示例使用了现成的 Raspbian 环境;让我们看看它是如何创建的。

首先克隆 SDK

git clone git://github.com/raspberrypi/tools.git rpi-tools

然后使用基础镜像创建初始 Rebuild 环境

rbld create --base ubuntu:16.04 rpi-raspbian

通过运行以下命令修改环境

rbld modify rpi-raspbian:initial

这允许用户在交互模式下修改环境。

运行以下命令安装 Make

sudo apt-get update
sudo apt-get install -y make

复制工具链并配置环境变量

TOOLCHAIN=gcc-linaro-arm-linux-gnueabihf-raspbian-x64
sudo cp -r rpi-tools/arm-bcm2708/$TOOLCHAIN /  
echo export CC=/$TOOLCHAIN/bin/arm-linux-gnueabihf- | sudo tee -a /rebuild/rebuild.rc

现在环境设置已完成,按 Ctrl+D 退出交互式 shell。

让我们提交更改并删除初始环境

rbld commit rpi-raspbian --tag v001
rbld rm rpi-raspbian:initial

运行

rbld list

您应该看到您的环境,它已准备好使用

    rpi-raspbian:v001

探索 Rebuild

要了解有关 Rebuild 的更多信息,请运行 rbld help。您还可以在项目的 GitHub 页面上查看 Rebuild 的 源代码文档,以及下载 Rebuild 命令的便捷 速查表

在洛杉矶的开源峰会上,在 Yan Vugenfirer 和 Dmitry Fleytman 的演讲 Linux 容器如何帮助管理 IoT 和嵌入式系统的开发环境 中了解更多信息。

User profile image.
Yan Vugenfirer 是 Daynix Computing LTD 的虚拟化专家。自 2006 年以来,他一直专注于虚拟化相关技术的发展,作为 QEMU 的贡献者和 virtio-win 项目的维护者。

1 条评论

您会如何评价这与简单地在挂载卷的容器中构建相比如何?

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.