1 Commits
Author SHA1 Message Date
wangdefa 97f3917a97 更新版本到 6.26.1
Build and Release / build-and-test (arm64) (push) Successful in 19s
Build and Release / build-and-test (amd64) (push) Successful in 22s
Build and Release / release (push) Successful in 34s
2026-06-22 18:06:17 +08:00
4 changed files with 10 additions and 10 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ on:
env: env:
DOCKER_BUILDKIT: "1" DOCKER_BUILDKIT: "1"
PRODUCT_NAME: "xxxig-proxy" PRODUCT_NAME: "xxxig-proxy"
PACKAGE_VERSION: "6.26.0" PACKAGE_VERSION: "6.26.1"
BUILDX_NO_DEFAULT_ATTESTATIONS: "1" BUILDX_NO_DEFAULT_ATTESTATIONS: "1"
jobs: jobs:
+3 -3
View File
@@ -25,7 +25,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
2. **release**(仅 tag 触发):下载 artifact,上传 tar.gz 到 Generic Package Registry、上传 .deb 到 Debian Registrystable/main),并用 `jq` 生成描述创建 Gitea Release。 2. **release**(仅 tag 触发):下载 artifact,上传 tar.gz 到 Generic Package Registry、上传 .deb 到 Debian Registrystable/main),并用 `jq` 生成描述创建 Gitea Release。
关键点: 关键点:
- 版本号**硬编码**在 ci.yaml 的 `PACKAGE_VERSION: "6.26.0"`(纯数字,符合 Debian 版本规范),发版改这里。**关键分界**:上游源码 git tag 带 `v`CI 用 `XXXIG_PROXY_VERSION=v${PACKAGE_VERSION}` 检出 `v6.26.0`),而 tar.gz/deb/registry 路径等包版本一律用数字;release job 用 `VERSION="${TAG#v}"` 归一,build-deb.sh 用 `DEB_VERSION="${VERSION#v}"` 归一。 - 版本号**硬编码**在 ci.yaml 的 `PACKAGE_VERSION: "6.26.1"`(纯数字,符合 Debian 版本规范),发版改这里。**关键分界**:上游源码 git tag 带 `v`CI 用 `XXXIG_PROXY_VERSION=v${PACKAGE_VERSION}` 检出 `v6.26.1`),而 tar.gz/deb/registry 路径等包版本一律用数字;release job 用 `VERSION="${TAG#v}"` 归一,build-deb.sh 用 `DEB_VERSION="${VERSION#v}"` 归一。
- Dockerfile build-arg 名为 `XXXIG_PROXY_VERSION`(注意 `_PROXY_`,与矿工的 `XXXIG_VERSION` 区分),ci.yaml 与两个 Dockerfile 三处必须一致。 - Dockerfile build-arg 名为 `XXXIG_PROXY_VERSION`(注意 `_PROXY_`,与矿工的 `XXXIG_VERSION` 区分),ci.yaml 与两个 Dockerfile 三处必须一致。
- **静态构建(musl,对齐矿工)**Dockerfile 先 `cd scripts && ./build_deps.sh` 编译静态 libuv/OpenSSL 到 `scripts/deps`,再 `cmake .. -DXMRIG_DEPS=scripts/deps -DBUILD_STATIC=ON` 全静态链接(proxy 的 `cmake/OpenSSL.cmake` 仅在 WIN/APPLE 下设静态,Linux 靠 flags.cmake 在 `BUILD_STATIC` 下加 `-static` 强制全静态)。产物 `ldd` 为 "not a dynamic executable",任意发行版可跑。`docker/Dockerfile` 基于 `alpine:latest`musl libc)。 - **静态构建(musl,对齐矿工)**Dockerfile 先 `cd scripts && ./build_deps.sh` 编译静态 libuv/OpenSSL 到 `scripts/deps`,再 `cmake .. -DXMRIG_DEPS=scripts/deps -DBUILD_STATIC=ON` 全静态链接(proxy 的 `cmake/OpenSSL.cmake` 仅在 WIN/APPLE 下设静态,Linux 靠 flags.cmake 在 `BUILD_STATIC` 下加 `-static` 强制全静态)。产物 `ldd` 为 "not a dynamic executable",任意发行版可跑。`docker/Dockerfile` 基于 `alpine:latest`musl libc)。
- **为何必须用 musl 而非 glibc(关键,勿改回)**glibc 的 `getaddrinfo` 依赖运行时 `dlopen` NSS 模块(`libnss_*.so`),`-static` 全静态后无法加载,跨 glibc 版本运行时 DNS 解析直接失败——表现为 `DNS error: "resource busy or locked"``getaddrinfo` 返回 `EAI_SYSTEM` + `errno=EBUSY`libuv 经 `uv__getaddrinfo_translate_error` 转成 `UV_EBUSY`,见 `src/base/net/dns/DnsUvBackend.cpp`)。musl 的 `getaddrinfo` 自带实现、不依赖 NSS dlopen,全静态也能正常解析。曾用的 glibc(`ubuntu:20.04`) 全静态构建线因此被删除。 - **为何必须用 musl 而非 glibc(关键,勿改回)**glibc 的 `getaddrinfo` 依赖运行时 `dlopen` NSS 模块(`libnss_*.so`),`-static` 全静态后无法加载,跨 glibc 版本运行时 DNS 解析直接失败——表现为 `DNS error: "resource busy or locked"``getaddrinfo` 返回 `EAI_SYSTEM` + `errno=EBUSY`libuv 经 `uv__getaddrinfo_translate_error` 转成 `UV_EBUSY`,见 `src/base/net/dns/DnsUvBackend.cpp`)。musl 的 `getaddrinfo` 自带实现、不依赖 NSS dlopen,全静态也能正常解析。曾用的 glibc(`ubuntu:20.04`) 全静态构建线因此被删除。
@@ -37,12 +37,12 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
```bash ```bash
# 本地编译某架构/发行版的二进制(输出到 ./output/linux_<arch>/ # 本地编译某架构/发行版的二进制(输出到 ./output/linux_<arch>/
docker buildx build --platform linux/amd64 \ docker buildx build --platform linux/amd64 \
--build-arg XXXIG_PROXY_VERSION=v6.26.0 \ --build-arg XXXIG_PROXY_VERSION=v6.26.1 \
--output type=local,dest=./output \ --output type=local,dest=./output \
-f docker/Dockerfile . -f docker/Dockerfile .
# 用已有 tar.gz 打 .deb 包 # 用已有 tar.gz 打 .deb 包
./debian/build-deb.sh amd64 6.26.0 xxxig-proxy-amd64-linux-static-6.26.0.tar.gz ./debian/build-deb.sh amd64 6.26.1 xxxig-proxy-amd64-linux-static-6.26.1.tar.gz
# 改 shell 脚本后做静态检查(需自行安装 shellcheck) # 改 shell 脚本后做静态检查(需自行安装 shellcheck)
shellcheck debian/*.sh shellcheck debian/*.sh
+5 -5
View File
@@ -49,7 +49,7 @@ sudo apt-get update && sudo apt-get install xxxig-proxy
```bash ```bash
curl -fSL -o xxxig-proxy.tar.gz \ curl -fSL -o xxxig-proxy.tar.gz \
https://gitea.bcde.io/api/packages/wangdefa/generic/xxxig-proxy/6.26.0/xxxig-proxy-amd64-linux-static-6.26.0.tar.gz https://gitea.bcde.io/api/packages/wangdefa/generic/xxxig-proxy/6.26.1/xxxig-proxy-amd64-linux-static-6.26.1.tar.gz
tar -xzf xxxig-proxy.tar.gz tar -xzf xxxig-proxy.tar.gz
./xxxig-proxy -c config.json ./xxxig-proxy -c config.json
``` ```
@@ -66,18 +66,18 @@ CI 定义于 [.gitea/workflows/ci.yaml](.gitea/workflows/ci.yaml)
```bash ```bash
# 编译某架构/发行版二进制(输出到 ./output/linux_<arch>/ # 编译某架构/发行版二进制(输出到 ./output/linux_<arch>/
docker buildx build --platform linux/amd64 \ docker buildx build --platform linux/amd64 \
--build-arg XXXIG_PROXY_VERSION=v6.26.0 \ --build-arg XXXIG_PROXY_VERSION=v6.26.1 \
--output type=local,dest=./output \ --output type=local,dest=./output \
-f docker/Dockerfile . -f docker/Dockerfile .
# 用产物 tar.gz 打 .deb # 用产物 tar.gz 打 .deb
./debian/build-deb.sh amd64 6.26.0 xxxig-proxy-amd64-linux-static-6.26.0.tar.gz ./debian/build-deb.sh amd64 6.26.1 xxxig-proxy-amd64-linux-static-6.26.1.tar.gz
``` ```
## 版本号约定 ## 版本号约定
- **上游源码 git tag** 带 `v`(如 `v6.26.0`),CI 用 `XXXIG_PROXY_VERSION=v${PACKAGE_VERSION}` 检出。 - **上游源码 git tag** 带 `v`(如 `v6.26.1`),CI 用 `XXXIG_PROXY_VERSION=v${PACKAGE_VERSION}` 检出。
- **包版本**tar.gz / deb / registry 路径)一律用数字(如 `6.26.0`),符合 Debian 版本规范。 - **包版本**tar.gz / deb / registry 路径)一律用数字(如 `6.26.1`),符合 Debian 版本规范。
发版只需改 ci.yaml 的 `PACKAGE_VERSION` 发版只需改 ci.yaml 的 `PACKAGE_VERSION`
+1 -1
View File
@@ -4,7 +4,7 @@ set -e
# 参数检查 # 参数检查
if [ $# -ne 3 ]; then if [ $# -ne 3 ]; then
echo "Usage: $0 <ARCH> <VERSION> <TARGZ_FILE>" echo "Usage: $0 <ARCH> <VERSION> <TARGZ_FILE>"
echo "Example: $0 amd64 6.26.0 xxxig-proxy-amd64-linux-static-6.26.0.tar.gz" echo "Example: $0 amd64 6.26.1 xxxig-proxy-amd64-linux-static-6.26.1.tar.gz"
exit 1 exit 1
fi fi