Packaging

GitHub Pages APT 源

这个仓库同时发布官网和预览 APT 源。官网是给人阅读的门户;APT repo 是给 apt 解析的机器目录。 当前机器目录保持在 /debian,以兼容已经发布的 lofibox.sources 示例。

目录结构

public/
  index.html
  assets/
  docs/
  .nojekyll
  lofibox-archive-keyring.pgp
  debian/
    dists/trixie/...
    pool/...

用户安装入口

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://vicliu624.github.io/lofibox-apt/lofibox-archive-keyring.pgp \
  | sudo tee /etc/apt/keyrings/lofibox-archive-keyring.pgp >/dev/null

sudo tee /etc/apt/sources.list.d/lofibox.sources >/dev/null <<'EOF'
Types: deb
URIs: https://vicliu624.github.io/lofibox-apt/debian
Suites: trixie
Components: main
Architectures: amd64 arm64 armhf
Signed-By: /etc/apt/keyrings/lofibox-archive-keyring.pgp
EOF

发布流程

GitHub Actions workflow 会 checkout lofibox-aptLoFiBox-Zero,构建 Debian 包, 使用 GPG key 生成 signed APT repo,然后把 site/ 静态官网复制到同一个 Pages artifact 根目录, 校验官网与 APT 源边界,然后部署 GitHub Pages。 被打包的应用源码来自 vicliu624/LoFiBox-Zero; 本仓库只负责官网门户和 APT 源发布。

  1. 推送到 main 走默认发布流程,也可以手动触发 Publish LoFiBox APT Repository workflow。
  2. 选择 source_ref,通常是 LoFiBox-Zero 的 main 或 release tag。
  3. 选择 suite,当前默认 trixie
  4. preview_suffix 使用 auto 时生成 ~lofibox<run_number> 后缀。
  5. 预览后缀会刻意排在未来 Debian 官方版本之前,所以 workflow 使用 dch -b 应用这个版本。
  6. APT 仓库 suite 仍然发布为 trixie,但包内 changelog distribution 固定为 unstable,避免 Lintian 把第三方源 suite 误判成无效上传目标。
  7. Lintian 使用 --profile debian,因为 GitHub runner 是 Ubuntu host,但这里检查的是 Debian packaging。
  8. 仓库会发布 amd64arm64,以及兼容 Raspberry Pi ARMv6/CM0 的 armhf 包。armhf 构建会强制 ARMv6 hard-float flags,并用 ELF CPU attribute 校验。
  9. workflow 构建包、生成 repo、复制官网、校验 public/ 并部署 Pages。

0.2.0 的 APT CI 注意点

push 触发的正式发布路径是 publish-xbuild.yml。它和 LoFiBox-Zero 源码 CI 是两条线: 源码 CI 验证应用仓库,apt CI 会重新构建 Debian 包、校验包元数据、签名软件源,并发布合并后的 Pages artifact。

仓库设置

在 GitHub 仓库设置中,把 Pages source 设为 GitHub Actions,并添加下面的 Actions secrets。 推送到 main 会使用 LoFiBox-Zero main 和默认 suite 自动发布。 手动运行仍然可以选择指定 LoFiBox-Zero ref。

Secrets

Secret用途
LOFIBOX_APT_GPG_PRIVATE_KEY导入用于 APT repository signing 的私钥,支持 ASCII-armored 或 base64 后的 private key 内容。
LOFIBOX_APT_GPG_KEY_ID传给 aptly / gpg 选择签名 key,推荐填写完整 fingerprint;如果不匹配,workflow 会退回到导入私钥的 fingerprint。

本地预览官网

cd lofibox-apt
python3 -m http.server --directory site 8080
# open the local preview in a browser

本地模拟 Pages artifact

scripts/stage-pages-site.sh --site site --output public
python3 -m http.server --directory public 8080
边界约束: 不要把 HTML 页面放进 public/debian,也不要把 Debian pool 移到官网资源目录。 官网可以链接 APT key 和 deb822 示例,但不能改变 apt 客户端依赖的目录结构。