Files
wangdefa 596ffc1567
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
feat: 重构 CI/CD 流水线,拆分为独立的构建和发布流程,更新相关文档和脚本
- 新增 .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 文件,统一版本管理
2026-08-07 09:51:47 +08:00

84 lines
2.8 KiB
YAML

name: CI
# 分支推送只做校验和原生构建;tag 发布由 release.yml 独立处理。
on:
push:
branches: ["**"]
env:
DOCKER_BUILDKIT: "1"
BUILDX_NO_DEFAULT_ATTESTATIONS: "1"
BUILDKIT_PROGRESS: plain
jobs:
validate:
runs-on: ubuntu-latest-amd64
steps:
- uses: actions/checkout@v4
- name: 校验版本、配置和脚本语法
run: |
VERSION=$(tr -d '\r\n' < VERSION)
[[ "${VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]
test -s conf/params.example.conf
bash -n debian/build-deb.sh
sh -n init.sh debian/postinst debian/prerm debian/postrm
build:
needs: validate
runs-on: ${{ matrix.arch == 'amd64' && 'ubuntu-latest-amd64' || 'ubuntu-latest-arm64' }}
strategy:
fail-fast: false
matrix:
arch: [amd64, arm64]
steps:
- uses: actions/checkout@v4
- name: 准备原生 Buildx
run: |
BUILDER=$(docker buildx create --use \
--driver docker-container \
--driver-opt network=host \
--driver-opt env.BUILDKIT_STEP_LOG_MAX_SIZE=50000000 \
--driver-opt env.BUILDKIT_STEP_LOG_MAX_SPEED=10000000)
echo "BUILDER=${BUILDER}" >> "$GITHUB_ENV"
docker buildx inspect --bootstrap
- name: 构建 ${{ matrix.arch }} 二进制
run: |
VERSION=$(tr -d '\r\n' < VERSION)
docker buildx build --pull \
--platform "linux/${{ matrix.arch }}" \
--build-arg "MONERO_VERSION=v${VERSION}" \
--output type=local,dest=./output \
-f docker/Dockerfile .
- name: 冒烟测试
run: |
DIR="./output/linux_${{ matrix.arch }}"
test -x "${DIR}/mond"
"${DIR}/mond" --version
"${DIR}/mond" --help >/dev/null
LDD_OUT=$(ldd "${DIR}/mond" 2>&1 || true)
grep -qE 'statically linked|not a dynamic executable' <<<"${LDD_OUT}"
- name: 验证 Debian 打包
run: |
VERSION=$(tr -d '\r\n' < VERSION)
TARGZ="mond-${{ matrix.arch }}-linux-static-${VERSION}.tar.gz"
tar -czf "${TARGZ}" -C "./output/linux_${{ matrix.arch }}" .
if ! command -v dpkg-deb >/dev/null; then
sudo apt-get update
sudo apt-get install -y dpkg-dev
fi
./debian/build-deb.sh "${{ matrix.arch }}" "${VERSION}" "${TARGZ}"
DEB="mond_${VERSION}_${{ matrix.arch }}.deb"
CONTENTS=$(dpkg-deb --contents "${DEB}")
grep -Fq 'opt/mond/mond' <<<"${CONTENTS}"
grep -Fq 'opt/mond/params.conf' <<<"${CONTENTS}"
grep -Fq 'lib/systemd/system/mond.service' <<<"${CONTENTS}"
- name: 清理 Buildx
if: always()
run: docker buildx rm "${BUILDER}" || true