feat: 重构 CI/CD 流水线,拆分为独立的构建和发布流程,更新相关文档和脚本
CI / validate (push) Successful in 5s
CI / build (amd64) (push) Successful in 3m38s
CI / build (arm64) (push) Successful in 8m39s
Release / build (amd64) (push) Successful in 3m35s
Release / build (arm64) (push) Successful in 8m58s
Release / release (push) Successful in 42s
CI / validate (push) Successful in 5s
CI / build (amd64) (push) Successful in 3m38s
CI / build (arm64) (push) Successful in 8m39s
Release / build (amd64) (push) Successful in 3m35s
Release / build (arm64) (push) Successful in 8m58s
Release / release (push) Successful in 42s
- 新增 .gitea/workflows/ci.yml,包含版本校验、构建和冒烟测试 - 新增 .gitea/workflows/release.yml,处理 tag 发布,上传包到仓库并创建 Release - 更新 README.md 和 CLAUDE.md,描述新的 CI/CD 流程和版本号约定 - 修改 init.sh,增加对关键锚点的检查,确保源码结构一致性 - 更新 Dockerfile,使用 OpenSSL 3.0.21 和 unbound 1.25.1,确保与 Monero 版本一致 - 更新 build-deb.sh 示例,反映最新版本号 - 新增 VERSION 文件,统一版本管理
This commit is contained in:
@@ -46,26 +46,26 @@ sudo apt-get update && sudo apt-get install mond
|
||||
|
||||
```bash
|
||||
curl -fSL -o mond.tar.gz \
|
||||
https://gitea.bcde.io/api/packages/wangdefa/generic/mond/0.18.5.0/mond-amd64-linux-static-0.18.5.0.tar.gz
|
||||
https://gitea.bcde.io/api/packages/wangdefa/generic/mond/0.18.5.1/mond-amd64-linux-static-0.18.5.1.tar.gz
|
||||
tar -xzf mond.tar.gz
|
||||
./mond --config-file params.conf # 配置模板见仓库 conf/params.example.conf
|
||||
```
|
||||
|
||||
## 构建与发布
|
||||
|
||||
CI 定义于 [.gitea/workflows/ci.yaml](.gitea/workflows/ci.yaml):
|
||||
Gitea Actions 分为两条流水线:
|
||||
|
||||
- **push 到 `main`/`develop`**:矩阵 `arch=[amd64,arm64]`,在原生 runner 上用 Docker(musl 纯静态)编译为 tar.gz 并打 `.deb`。
|
||||
- **打 tag**:产物上传到 Generic / Debian 包仓库并创建 Release。
|
||||
- [.gitea/workflows/ci.yml](.gitea/workflows/ci.yml):分支推送时检查版本、配置和 shell 语法,并在 amd64、arm64 原生 runner 上编译、严格冒烟测试和验证 DEB 包内容。
|
||||
- [.gitea/workflows/release.yml](.gitea/workflows/release.yml):tag 推送时构建 tar.gz 和 DEB,生成 `SHA256SUMS`,上传包仓库并创建或更新 Release。
|
||||
|
||||
musl 纯静态在 `alpine:3.23` 下手编 5 个静态库(OpenSSL/libsodium/libzmq/expat/unbound——Alpine 仓库只有 `.so`/缺 `.a`)并 patch monero CMakeLists(去 `-pie`、Linux `STATIC_FLAGS` 改真 `-static`),产出 static-pie 零依赖二进制。换名 + patch 逻辑见 [init.sh](init.sh)。
|
||||
musl 纯静态在 `alpine:3.23` 下手编 5 个静态库(OpenSSL 3.0.21、libsodium 1.0.20、libzmq 4.3.5、expat 2.6.4、unbound 1.25.1)并 patch monero CMakeLists(去 `-pie`、Linux `STATIC_FLAGS` 改真 `-static`),产出 static-pie 零依赖二进制。换名 + patch 逻辑见 [init.sh](init.sh)。
|
||||
|
||||
本地构建:
|
||||
|
||||
```bash
|
||||
# 编译某架构二进制(输出到 ./output/linux_<arch>/mond)
|
||||
docker buildx build --platform linux/amd64 \
|
||||
--build-arg MONERO_VERSION=v0.18.5.0 \
|
||||
--build-arg MONERO_VERSION="v$(cat VERSION)" \
|
||||
--output type=local,dest=./output \
|
||||
-f docker/Dockerfile .
|
||||
|
||||
@@ -73,15 +73,17 @@ docker buildx build --platform linux/amd64 \
|
||||
ldd output/linux_amd64/mond
|
||||
|
||||
# 用产物 tar.gz 打 .deb
|
||||
./debian/build-deb.sh amd64 0.18.5.0 mond-amd64-linux-static-0.18.5.0.tar.gz
|
||||
./debian/build-deb.sh amd64 0.18.5.1 mond-amd64-linux-static-0.18.5.1.tar.gz
|
||||
```
|
||||
|
||||
## 版本号约定
|
||||
|
||||
- **上游源码 git tag** 带 `v`(如 `v0.18.5.0`),CI 用 `MONERO_VERSION=v${PACKAGE_VERSION}` 检出。
|
||||
- **包版本**(tar.gz / deb / registry 路径)一律用数字(如 `0.18.5.0`),符合 Debian 版本规范。
|
||||
- 根目录 [VERSION](VERSION) 是唯一版本来源,使用不带 `v` 的四段版本号。
|
||||
- **上游源码 git tag** 带 `v`(如 `v0.18.5.1`),CI 构建时自动补回。
|
||||
- **包版本**(tar.gz / deb / registry 路径)一律用数字(如 `0.18.5.1`),符合 Debian 版本规范。
|
||||
- 发布 tag 可写成 `0.18.5.1` 或 `v0.18.5.1`,去掉 `v` 后必须与 VERSION 一致。
|
||||
|
||||
发版只需改 ci.yaml 的 `PACKAGE_VERSION`。
|
||||
发版时先更新 VERSION 并提交,再创建同版本 tag。
|
||||
|
||||
## 修改内容
|
||||
|
||||
|
||||
Reference in New Issue
Block a user