9 个版本

0.1.48 2024年8月12日
0.1.47 2024年7月31日
0.1.40 2024年6月21日
0.1.38 2024年4月10日

#62 in 构建工具

Download history 129/week @ 2024-06-17 9/week @ 2024-06-24 662/week @ 2024-07-01 32/week @ 2024-07-08 140/week @ 2024-07-29 1/week @ 2024-08-05 116/week @ 2024-08-12

每月 257 次下载

Apache-2.0 协议

605KB
13K SLoC

Build & Test Release

Bakery:Yocto/OE 项目的构建引擎

简介

Bakery 是一款多功能命令行工具,旨在简化 Yocto 项目或 OpenEmbedded 项目的构建过程。它作为强大的 bitbake 工具的包装器,利用 Docker 确保本地和 CI(持续集成)构建之间的一致性环境。

为什么选择 Bakery?

构建复杂的 Yocto 项目或 OpenEmbedded 项目通常涉及复杂的脚本和目录结构,使得维护变得具有挑战性。Bakery 通过引入标准化的方法来解决这一挑战,同时保持灵活性。它旨在通过将基本的项目配置合并到 JSON 文件中,提高开发体验,促进更清洁、更易于维护的工作流程。

安装

Debian 软件包

下载其中一个 deb 软件包版本。

user@node:/dir$ BAKERY_VERSION=x.y.z
user@node:/dir$ wget https://github.com/Mikrodidakt/bakery/releases/download/v${BAKERY_VERSION}/bakery-v${BAKERY_VERSION}.deb
user@node:/dir$ sudo dpkg -i bakery-v${BAKERY_VERSION}.deb

由于 bakery 是用 Rust 编写的,所以它是一个单二进制文件,只依赖于 libc。它将被安装到 /usr/bin/bakery。

构建源代码

有关构建 bakery 的信息,请参阅 构建源代码

Docker

默认情况下,Bakery 使用 Docker。请参阅 Docker 设置指南,了解如何在您的宿主系统上设置 Docker 的详细说明。此外,如果您希望在没有 Docker 的情况下运行 Bakery,请参阅有关 禁用 Docker 的指南。要测试 Docker 是否正常工作,请运行

user@node:/dir$ BAKERY_VERSION=x.y.z
user@node:/dir$ docker run -it ghcr.io/mikrodidakt/bakery/bakery-workspace:${BAKERY_VERSION} /bin/bash

用法

Build engine for the Yocto/OE

Usage: bakery <COMMAND>

Commands:
  sync    Sync workspace e.g sync/update git submodules
  upload  Upload artifacts to artifactory server
  deploy  Deploy artifact to target
  list    List all builds or the tasks available for one build
  setup   Setup workspace e.g initializing git submodules
  clean   Clean one or all the tasks defined in a build config
  build   Execute a build either a full build or a task of one of the builds
  shell   Initiate a shell within Docker or execute any command within the BitBake environment
  help    Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version

有关每个子命令的详细使用说明,请参阅子命令文档。每个子命令通过定义一个构建配置文件来配置,该文件描述了如何构建产品。建议首先启动一个shell,这不仅为使用Bakery设置了环境,还允许使用通过OE/Yocto提供的任何工具。

user@node:/dir$ bakery shell -c <config>

启动Bakery shell时,将选择并使用shell内的配置。终端将显示以下信息:

<user>@bakery-v<version>[<config>]:~/$

每个子命令都将作为预定义构建配置的别名可用。只需在任意位置输入子命令即可运行它。要获取当前子命令列表,请运行:

<user>@bakery-v<version>[<config>]:~/$ help

要开始构建,请运行:

<user>@bakery-v<version>[<config>]:~/$ build

有关如何使用shell和任何子命令的更多信息,请参阅shell

模板项目

要尝试Bakery,最简单的方法是使用tests/template-workspace下的模板工作空间。运行:

user@node:/dir$ cd tests/template-workspace
user@node:/dir$ git submodule update

这将拉取poky,结合工作空间和构建配置,beaglebone black可以使用Bakery工作空间shell构建。

[email protected][beaglebone]:~/$

设置项目

要从头设置项目,主要需要以下四件事:

  • bakery - bakery工具。请参阅安装
  • 工作空间 - 定义工作空间结构的配置。请参阅设置工作空间
  • 构建配置 - 定义如何构建产品的配置。请参阅构建配置
  • 元层 - BitBake在生成产品所需工件时使用的元数据。请参阅元层

主要功能

  • Docker集成:Bakery无缝集成Docker以创建可重复的构建环境,确保在不同开发设置之间的一致性。

  • JSON配置:项目特定的配置在JSON文件中定义 - 构建配置和工作空间配置。构建配置封装了所有必要的local.conf和bblayers.conf设置,简化了构建过程。

  • 基于任务的流程:Bakery在构建中组织任务,允许用户定义各种操作,从构建镜像配方到签名固件或打包图像进行重新分发。任务可以是BitBake任务或自定义脚本,提供灵活的项目工作流程。

  • 以开发者为中心的CI一致性:Bakery促进了一个开发环境,其中CI构建是通过构建配置中的任务定义的。这确保了CI过程是透明和可理解的,允许开发者在本地轻松地重现CI构建。

    • 环境间一致性:使用Bakery,CI构建过程与本地构建保持一致。开发者可以轻松地复制CI构建,减少开发环境和CI环境之间出现差异的可能性。

    • 调试变得简单:开发者可以通过在本地重现确切的CI构建来快速识别和解决问题。CI和本地开发之间的紧密集成简化了调试,从而加快了问题的解决。

    • 提高开发者体验:通过将CI与本地构建保持一致,Bakery增强了整体开发者体验。开发者对其构建的可靠性充满信心,并且可以更有效地迭代其项目。

Bakery不能做什么

尽管Bakery简化了Yocto项目和OpenEmbedded开发中的许多方面,但了解其局限性至关重要。

  • 元层设置: Bakery 不处理元层的初始设置。鼓励开发者使用 Git 子模块或 Android Repo 工具独立管理元层。
  • 工具替换: Bakery 不替换 BitBake 或 Yocto 项目或 OpenEmbedded 项目中的任何其他工具。它通过封装一些复杂性,使不同知识水平的用户使用起来更加简单。

Bakery 致力于维护寻求对其项目完全控制的开发者的灵活性,确保与 Yocto 项目和 OpenEmbedded 项目中所有工具和工作流程兼容。

依赖项

~14–25MB
~379K SLoC