尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Crochet CI实战:用一条Shell脚本构建可复现的FreeBSD 14.2自动化镜像流水线

Crochet CI实战:用一条Shell脚本构建可复现的FreeBSD 14.2自动化镜像流水线 Crochet CI实战用一条Shell脚本构建可复现的FreeBSD 14.2自动化镜像流水线【免费下载链接】crochetBuild FreeBSD images for RaspberryPi, BeagleBone, PandaBoard, and others.项目地址: https://gitcode.com/gh_mirrors/cr/crochetCrochet 是一个开源 FreeBSD 镜像构建工具只需一条 Shell 脚本就能为 RaspberryPi、BeagleBone、PandaBoard 等硬件自动生成可启动的磁盘镜像。本文带你实战 Crochet 项目自带的 CI 流水线用一条 ci/build_14.2_i386.sh 脚本从零构建可复现的 FreeBSD 14.2 自动化镜像适合想要快速入门 CI 实践和 FreeBSD 系统镜像打包的新手。为什么需要 FreeBSD 镜像自动化流水线手动打包系统镜像往往面临三个痛点不可复现手工步骤多换台机器结果就不一样耗时长buildworld buildkernel 动辄数小时重复构建成本高难定制改一个配置文件都要重新走完整流程Crochet 的解法很简洁一条脚本 一个配置文件把拉源码 → 编译 → 分区 → 打镜像全部自动化。而项目内置的 CI 目录正是这套思路的最小可运行示例。CI 实战4 步完成 FreeBSD 14.2 镜像构建打开 ci/build_14.2_i386.sh整个流水线只有 4 个关键步骤步骤命令作用1️⃣ 装依赖pkg install -y git确保构建机有 git2️⃣ 拉源码git clone -b releng/14.2 src.git /usr/src锁定 FreeBSD 14.2稳定分支这是可复现的核心3️⃣ 跑构建sh crochet.sh -c ci/configs/config_i386.sh用配置文件驱动整条构建流水线4️⃣ 清缓存rm -rf work/obj删除 obj 目录保证下次全量重建关键洞察使用-b releng/14.2锁定源码分支意味着任何人、在任何时间运行这条脚本拿到的都是同一份 14.2 稳定版源码——镜像自然可复现。最小配置解读board_setup ImageSize构建行为由 ci/configs/config_i386.sh 配置文件决定它本质上就是项目模板 config.sh.sample 的极简版。两个核心配置项board_setup GenericI386 # 第一行必须指定目标平台 option ImageSize 3900mb # 镜像大小适配 4GB 存储卡board_setup是必填项且必须是第一行名字对应 board/ 目录下的平台目录。CI 选用GenericI386通用 i386 平台其板级逻辑在 board/GenericI386/setup.sh 中定义负责 MBR 分区、UFS 文件系统创建和引导块安装。项目支持 30 种硬件平台RaspberryPi、OrangePi、BananaPi、Wandboard、VMWareGuest 等把这一行换成board_setup RaspberryPi就能构建树莓派镜像。增量构建机制让数小时的构建只花几分钟Crochet 最实用的设计藏在 crochet.sh 主脚本和work/工作目录里构建标记world 或 kernel 构建成功后会在work/目录留一个标记文件跳过重建再次运行脚本时检测到标记且构建参数未变直接跳过对应阶段全量重建删除work/obj就像 CI 脚本最后一步即可强制从头编译。# 只改镜像布局重跑 crochet 只要几分钟 sudo /bin/sh crochet.sh -c ci/configs/config_i386.sh # 源码更新了清掉缓存全量重建 rm -rf work/obj这个机制让 CI 流水线既快又干净每次跑完清 obj保证产出一致日常调试时保留缓存快速迭代。构建阶段全解析Crochet 的 strategy 流水线Crochet 内部用strategy 列表组织构建流程见 lib/strategy.sh配置文件中每个option都会向流水线注册任务然后按阶段顺序执行POST_CONFIG → CHECK → BUILD_WORLD → BUILD_KERNEL → 镜像构建/分区/挂载 → BOOT 安装 → FreeBSD installworld → 用户定制阶段常量与描述都定义在 lib/strategy.sh 中比如PHASE_BUILD_WORLD、PHASE_PARTITION_LWW、PHASE_FREEBSD_USER_CUSTOMIZATION。几个 LWWLast Write Wins阶段允许板级定义覆盖默认行为——这正是 30 多种硬件共用一套核心逻辑的原因。 顺便一提主脚本在构建开始和结束都会调用 lib/email.sh 发送状态邮件配合-e email参数长时构建不用干盯着终端等。从 CI 脚本到生产配置可选定制项一览CI 配置只用了 2 个选项而 config.sh.sample 注释里藏着完整的定制手册约 370 行文档。新手常用的几类定制类型示例选项效果 创建用户option User username生成可 SSH 登录的账号默认 root 禁止 SSH 交换文件option SwapFile 768mb自动写入 rc.conf 和 fstab 装软件包option Package sudo nginx从 pkg 仓库安装软件 时间同步option Ntpd启用 NTP 守护进程️ 压缩镜像option CompressImage xz最终镜像压缩打包 覆盖文件overlay/目录任意文件原样拷进镜像所有预置选项的源码都在 option/ 目录每个选项一个子目录如 option/SwapFile/想加自己的功能可以参考 option/Example/ 模板。新手上手清单3 条命令跑通全流程在 FreeBSD 构建机上跟着 CI 脚本即可跑通# 1. 获取 Crochet 源码 git clone https://gitcode.com/gh_mirrors/cr/crochet.git # 2. 直接执行 CI 构建脚本需要 root sudo sh ci/build_14.2_i386.sh # 3. 产物在 work/ 目录用 dd 写入存储设备即可启动⚠️ 实用提示首次构建需数小时机器会自动跳过已完成的编译阶段出问题时先查work/目录下的日志文件换硬件平台前先读对应board/平台名/README。核心文件速查文件说明crochet.sh主入口脚本解析参数、加载库、执行 strategyci/build_14.2_i386.shCI 构建脚本4 步流水线ci/configs/config_i386.shCI 专用 i386 构建配置config.sh.sample完整配置模板 定制文档lib/核心库构建、分区、引导、邮箱通知等board/30 硬件平台定义option/可插拔的构建选项总结Crochet 的 CI 实战展示了自动化镜像流水线的精髓——锁定源码分支保证可复现配置文件描述构建意图增量机制压缩构建时间。从这条 10 行脚本出发你既能快速产出 FreeBSD 14.2 镜像也能轻松扩展到任何 Crochet 支持的硬件平台。【免费下载链接】crochetBuild FreeBSD images for RaspberryPi, BeagleBone, PandaBoard, and others.项目地址: https://gitcode.com/gh_mirrors/cr/crochet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表