diff --git a/.gitea/workflows/miniapp-preview.yml b/.gitea/workflows/miniapp-preview.yml index e1bd27a..5416dab 100644 --- a/.gitea/workflows/miniapp-preview.yml +++ b/.gitea/workflows/miniapp-preview.yml @@ -31,16 +31,24 @@ jobs: # 优先复用 runner 宿主机缓存的工具链(工作目录持久化) TOOLDIR="$RUNNER_WORKSPACE/.lunar-toolchain" mkdir -p "$TOOLDIR" - if [ -x "$TOOLDIR/node/bin/node" ]; then + if [ -x "$TOOLDIR/node/bin/node" ] && "$TOOLDIR/node/bin/node" --version >/dev/null 2>&1; then echo "复用缓存 Node 工具链" else - wget -q --tries=2 --timeout=60 -O "$TOOLDIR/node.tgz" \ - "https://nodejs.org/dist/v22.12.0/node-v22.12.0-linux-x64.tar.xz" \ - || wget -q --tries=2 --timeout=60 -O "$TOOLDIR/node.tgz" \ - "https://mirrors.aliyun.com/nodejs-release/v22.12.0/node-v22.12.0-linux-x64.tar.xz" - rm -rf "$TOOLDIR/node-v22.12.0-linux-x64" - tar -C "$TOOLDIR" -xJf "$TOOLDIR/node.tgz" - mv "$TOOLDIR/node-v22.12.0-linux-x64" "$TOOLDIR/node" + rm -rf "$TOOLDIR/node" "$TOOLDIR/node-v22.12.0-linux-x64" + # 探测 libc:Alpine(musl) 用 unofficial musl 构建,其余用官方 glibc 构建(tar.gz,busybox tar 不支持 xz) + if ldd --version 2>&1 | grep -qi musl || [ ! -e /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 ]; then + NODE_DIST="node-v22.12.0-linux-x64-musl" + wget -q --tries=2 --timeout=120 -O "$TOOLDIR/node.tgz" \ + "https://unofficial-builds.nodejs.org/download/release/v22.12.0/$NODE_DIST.tar.gz" + else + NODE_DIST="node-v22.12.0-linux-x64" + wget -q --tries=2 --timeout=120 -O "$TOOLDIR/node.tgz" \ + "https://nodejs.org/dist/v22.12.0/$NODE_DIST.tar.gz" \ + || wget -q --tries=2 --timeout=120 -O "$TOOLDIR/node.tgz" \ + "https://mirrors.aliyun.com/nodejs-release/v22.12.0/$NODE_DIST.tar.gz" + fi + tar -C "$TOOLDIR" -xzf "$TOOLDIR/node.tgz" + mv "$TOOLDIR/$NODE_DIST" "$TOOLDIR/node" rm -f "$TOOLDIR/node.tgz" fi "$TOOLDIR/node/bin/node" --version