补充说明
本教程介绍 dufs-zh 的发布流程:不依赖本地编译,只需更新版本号、推送代码与 tag,由 GitHub Actions 自动完成多架构二进制编译、创建 GitHub Release、构建并推送多架构 Docker 镜像(mobufan/dufs-zh:latest + 版本标签)。
项目:dufs-zh|Dufs 文件服务器(中文界面版) 仓库:https://github.com/meimolihan/dufs-zh 仅标准语义化版本
vX.Y.Z才会推送镜像latest标签(含rc等后缀视为预发布,只建 Release 不推镜像)。
发布前置条件
- 已安装
git、python3 - 可选:
gh(存在时自动清理同名 Release / tag,重复发布不报错) - 有仓库推送权限(
main分支 + 创建 tag)
发布命令
cd /vol1/1000/GitHub/dufs-zh
bash scripts/build-and-push.sh v1.0.0 --yes
bash scripts/build-and-push.sh v1.0.0 --yes -m "本次新增 xxx"
-
脚本执行内容:
- 清理已存在的同名 Release 与本地/远端 tag(防重复发布冲突)
- 更新
Cargo.toml与Cargo.lock中版本号为1.0.0 - 写入
RELEASE_NOTES.md(标题 + 可选备注) git commit(chore: bump version to 1.0.0)并推送main- 创建并推送 tag
v1.0.0 - 后续全部交给 GitHub Actions Release 工作流
-
版本号与 tag 不一致会直接失败:Actions 首步校验
Cargo.toml的version必须等于 tag 去掉v的内容(所以发布务必用build-and-push.sh,不要手工打 tag)。
GitHub Actions Release 工作流
触发方式:推送 v* 标签 / 手动 workflow_dispatch。
| 任务 | 内容 |
|---|---|
| release(多架构编译) | 9 个目标平台:linux musl(x86_64 / aarch64 / i686 / armv7 / arm)、macOS(x86_64 / aarch64)、Windows(x86_64 / aarch64) |
| 编译方式 | 原生 target 用 cargo,linux 交叉目标用 cross(use-cross: true);cargo build --locked --release |
| 打包 | Windows 出 .zip,其他平台出 dufs-v<版本>-<target>.tar.gz |
| 发版 | softprops/action-gh-release 自动创建 Release,正文取 RELEASE_NOTES.md,rc=true 时标记为 pre-release |
| docker(镜像) | 多架构 linux/amd64、linux/arm64、linux/386、linux/arm/v7;push 仅当版本为正式版 vX.Y.Z;标签 mobufan/dufs-zh:latest、mobufan/dufs-zh:v1.0.0 |
Docker 使用
Dockerfile-release(build-args REPO、VER),容器内从当前仓库 Release 下载对应架构 musl 二进制;rc=true(如v1.0.0-rc1)时构建但不推送。
Release 产出
- 二进制资产:
dufs-v<版本>-<target>.tar.gz(Windows 为.zip)x86_64-unknown-linux-musl、aarch64-unknown-linux-musl、i686-unknown-linux-musl、armv7-unknown-linux-musleabihf、arm-unknown-linux-musleabihfx86_64-apple-darwin、aarch64-apple-darwinx86_64-pc-windows-msvc、aarch64-pc-windows-msvc
- Docker 镜像:
docker pull mobufan/dufs-zh:latest或docker pull mobufan/dufs-zh:v1.0.0
常用操作
| 操作 | 命令 |
|---|---|
| 发布 v1.0.0(免交互) | bash scripts/build-and-push.sh v1.0.0 --yes |
| 发布并带备注 | bash scripts/build-and-push.sh v1.0.0 --yes -m "本次新增 xxx" |
| 查看发布进度 | gh run watch(或 Actions 页面手动查看) |
| 查看发布结果 | gh release view v1.0.0 |
| 拉取镜像验证 | docker pull mobufan/dufs-zh:latest |
注意事项
- 只能按
vX.Y.Z格式发版,脚本会自动校验 --locked编译要求Cargo.lock中根包版本与Cargo.toml一致,务必用build-and-push.sh发布(脚本同步两处)- 预发布(如
v1.0.1-rc1)只建 Release 不推 Docker 镜像 - 目标机器安装/升级用
scripts/install.sh(自动按架构选择 Release 资产),详见 dufs-zh