Project Icon

melange

多架构APK包构建工具 支持声明式管道

Melange是一款专门用于构建APK包的开源工具,主要为apko构建的容器镜像提供自定义包。它默认支持多架构构建,采用声明式管道来定义和控制每个构建步骤。Melange适用于构建OCI容器镜像,让DevOps团队能够有效管理软件构件。该工具支持多种安装方式,包括Homebrew、源代码编译以及容器镜像,为开发者提供了灵活的使用选择。

melange

使用声明式管道构建 apk 软件包。

通常用于为使用 apko 构建的容器镜像提供自定义软件包。大多数 apk 软件包都是为 WolfiAlpine Linux 生态系统构建的。

主要特点:

  • 面向管道的构建。 构建管道的每个步骤都由你定义和控制,不同于传统的包管理器具有不同的阶段。
  • 默认支持多架构。 使用 QEMU 模拟各种架构,避免了交叉编译步骤的需求。

为什么

安全软件工厂是 DevOps 的演进,允许用户证明集成到软件设备中的所有构件的来源。通过构建和捕获软件构件到软件包中,DevOps 团队可以像管理镜像的其他组件一样管理他们的软件构件。

这在使用 apko 以 OCI 容器镜像形式构建软件设备时特别有用。

安装

你可以通过 Homebrew 安装 Melange:

brew install melange

你也可以从源代码安装 Melange:

go install chainguard.dev/melange@latest

你还可以使用 Melange 容器镜像:

docker run cgr.dev/chainguard/melange version

要使用示例,你通常需要将当前目录挂载到容器中并提供提升的权限,例如:

docker run --privileged -v "$PWD":/work cgr.dev/chainguard/melange build examples/gnu-hello.yaml

在容器外运行需要 Docker,但也应该可以与其他运行时如 podman 一起使用。

快速入门

一个 melange 构建文件如下所示:

package:
  name: hello
  version: 2.12
  epoch: 0
  description: "GNU hello world 程序"
  copyright:
    - attestation: |
        Copyright 1992, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2005,
        2006, 2007, 2008, 2010, 2011, 2013, 2014, 2022 Free Software Foundation,
        Inc.
      license: GPL-3.0-or-later
  dependencies:
    runtime:

environment:
  contents:
    repositories:
      - https://dl-cdn.alpinelinux.org/alpine/edge/main
    packages:
      - alpine-baselayout-data
      - busybox
      - build-base
      - scanelf
      - ssl_client
      - ca-certificates-bundle

pipeline:
  - uses: fetch
    with:
      uri: https://ftp.gnu.org/gnu/hello/hello-${{package.version}}.tar.gz
      expected-sha256: cf04af86dc085268c5f4470fbae49b18afbc221b78096aab842d934a76bad0ab
  - uses: autoconf/configure
  - uses: autoconf/make
  - uses: autoconf/make-install
  - uses: strip

我们可以通过以下方式构建:

melange build examples/gnu-hello.yaml

或者,使用 Docker:

docker run --privileged --rm -v "${PWD}":/work \
  cgr.dev/chainguard/melange build examples/gnu-hello.yaml

这将创建一个 packages 文件夹,其中包含该软件包支持的每个架构的条目。如果你只想为当前架构构建,可以在构建命令中添加 --arch $(uname -m)。在架构目录内,你应该能找到管道中构建的每个软件包的 apk 文件。

如果你想签名你的 apk,请使用 melange keygen 命令创建一个签名密钥:

melange keygen
 正在生成 4096 位素数的密钥对,请稍候...
 已将私钥写入 melange.rsa
 已将公钥写入 melange.rsa.pub

然后将 --signing-key 参数传递给 melange build

调试 melange 构建

要在 melange 构建中包含调试级别的信息,请编辑你的 melange.yaml 文件,并在管道中包含 set -x。你可以在管道命令的任何位置添加此标志,以进一步调试构建的特定部分。

...
pipeline:
  - name: 构建 Minicli 应用程序
    runs: |
      set -x
      APP_HOME="${{targets.destdir}}/usr/share/hello-minicli"
...

默认替换

Melange 提供以下默认替换,可以在构建文件管道中引用:

替换描述
${{package.name}}软件包名称
${{package.version}}软件包版本
${{package.epoch}}软件包纪元
${{package.full-version}}${{package.version}}-r${{package.epoch}}
${{package.description}}软件包描述
${{package.contextdir}}主软件包和子软件包的目标存储目录
${{targets.destdir}}主软件包的目标存储目录
${{targets.subpkgdir}}子软件包的目标存储目录
${{build.arch}}当前构建的架构(例如 x86_64, aarch64)
${{build.goarch}}当前构建的 GOARCH(例如 amd64, arm64)

一个带有替换的示例构建文件管道:

pipeline:
  - name: '创建临时目录'
    runs: mkdir ${{targets.destdir}}/var/lib/${{package.name}}/tmp

更详细的文档

与 apko 一起使用

要在 apko 中使用 melange 构建的 apk,可以将其上传到软件包仓库或使用"本地"仓库。使用本地仓库允许 melange 构建和 apko 构建在同一目录(或 GitHub 仓库)中运行,而无需使用外部存储。 这种方法的一个例子可以在 nginx-image-demo 仓库 中看到。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号