Skip to content

Commit f12c206

Browse files
committed
build: version 3.0.0-beta2
1 parent 0121921 commit f12c206

252 files changed

Lines changed: 43193 additions & 26412 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/settings.local.json

Lines changed: 0 additions & 10 deletions
This file was deleted.

.env

Lines changed: 0 additions & 7 deletions
This file was deleted.

.eslintrc.js

Lines changed: 0 additions & 24 deletions
This file was deleted.

.github/workflows/docker-beta.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: Docker CI (beta)
33
on:
44
push:
55
tags: [ 'v*.*.*-beta*' ]
6-
branches: [ '*-beta' ]
6+
branches: [ '*-beta*' ]
77

88
jobs:
99
build-and-push:
@@ -50,7 +50,7 @@ jobs:
5050
fi
5151
else
5252
# 分支触发处理
53-
VERSION=$(node -p "require('./package.json').version")
53+
VERSION=$(node -p "require('./web/package.json').version")
5454
BRANCH_NAME=${GITHUB_REF#refs/heads/}
5555
RAW_VERSION="branch-${BRANCH_NAME}"
5656
IS_BETA_TAG=false

.github/workflows/docker.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ jobs:
5858
echo "🏷️ Tag触发,版本: $VERSION (正式发布)"
5959
else
6060
# 非tag触发,使用package.json版本
61-
VERSION=$(node -p "require('./package.json').version")
61+
VERSION=$(node -p "require('./web/package.json').version")
6262
IS_RELEASE=false
6363
echo "📦 非tag触发,使用package.json版本: $VERSION (开发版本)"
6464
fi
@@ -82,8 +82,8 @@ jobs:
8282
labels: |
8383
org.opencontainers.image.version=${{ steps.get_version.outputs.version }}
8484
org.opencontainers.image.revision=${{ github.sha }}
85-
org.opencontainers.image.title=NodePass Dashboard
86-
org.opencontainers.image.description=NodePass Dashboard - 隧道管理面板
85+
org.opencontainers.image.title=NodePassDash
86+
org.opencontainers.image.description=NodePassDash - 隧道管理面板
8787
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
8888
org.opencontainers.image.url=${{ github.server_url }}/${{ github.repository }}
8989

.github/workflows/release-beta.yml

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: Release Beta
33
on:
44
push:
55
tags: [ 'v*.*.*-beta*' ]
6-
branches: [ '*-beta' ]
6+
branches: [ '*-beta*' ]
77

88
jobs:
99
goreleaser:
@@ -27,27 +27,21 @@ jobs:
2727
with:
2828
node-version: '20'
2929
cache: 'pnpm'
30+
cache-dependency-path: 'web/pnpm-lock.yaml'
3031

3132
- name: 🏗️ 构建前端并准备嵌入
3233
run: |
3334
echo "📦 安装前端依赖..."
35+
cd web
3436
pnpm install --frozen-lockfile
3537
3638
echo "🏗️ 构建前端静态文件..."
3739
pnpm build
3840
3941
echo "📁 验证构建结果:"
40-
ls -la dist/
42+
ls -la ../cmd/server/dist/
4143
42-
echo "📦 压缩前端文件为 dist.zip..."
43-
cd dist && zip -r ../dist.zip . && cd ..
44-
45-
echo "📋 复制 dist.zip 到 cmd/server/ 目录..."
46-
cp dist.zip cmd/server/
47-
48-
echo "🔍 验证文件:"
49-
ls -la dist.zip cmd/server/dist.zip
50-
echo "✅ 前端构建和嵌入准备完成"
44+
echo "✅ 前端构建完成,文件已输出到 cmd/server/dist/"
5145
5246
- name: 🔧 安装CGO交叉编译工具
5347
run: |
@@ -99,7 +93,7 @@ jobs:
9993
fi
10094
else
10195
# 分支触发处理
102-
VERSION=$(node -p "require('./package.json').version")
96+
VERSION=$(node -p "require('./web/package.json').version")
10397
BRANCH_NAME=${GITHUB_REF#refs/heads/}
10498
TEMP_TAG="v${VERSION}"
10599
IS_TAG_TRIGGER=false

.github/workflows/release.yml

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,27 +32,21 @@ jobs:
3232
with:
3333
node-version: '20'
3434
cache: 'pnpm'
35+
cache-dependency-path: 'web/pnpm-lock.yaml'
3536

3637
- name: 🏗️ 构建前端并准备嵌入
3738
run: |
3839
echo "📦 安装前端依赖..."
40+
cd web
3941
pnpm install --frozen-lockfile
4042
4143
echo "🏗️ 构建前端静态文件..."
4244
pnpm build
4345
4446
echo "📁 验证构建结果:"
45-
ls -la dist/
47+
ls -la ../cmd/server/dist/
4648
47-
echo "📦 压缩前端文件为 dist.zip..."
48-
cd dist && zip -r ../dist.zip . && cd ..
49-
50-
echo "📋 复制 dist.zip 到 cmd/server/ 目录..."
51-
cp dist.zip cmd/server/
52-
53-
echo "🔍 验证文件:"
54-
ls -la dist.zip cmd/server/dist.zip
55-
echo "✅ 前端构建和嵌入准备完成"
49+
echo "✅ 前端构建完成,文件已输出到 cmd/server/dist/"
5650
5751
- name: Set up Go
5852
uses: actions/setup-go@v5
@@ -86,8 +80,8 @@ jobs:
8680
- name: 📝 获取版本信息
8781
id: get_version
8882
run: |
89-
# 从 package.json 获取版本号
90-
VERSION=$(node -p "require('./package.json').version")
83+
# 从 web/package.json 获取版本号
84+
VERSION=$(node -p "require('./web/package.json').version")
9185
echo "📦 Package.json version: $VERSION"
9286
9387
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then

.gitignore

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,7 @@ node_modules/
5555
.next/
5656
.dist/
5757
dist/
58-
public/sqlite.db-wal
59-
public/sqlite.db
60-
public/sqlite.db-shm
58+
db/
6159
# Logs
6260
npm-debug.log*
6361
yarn-debug.log*
@@ -75,14 +73,15 @@ bin/
7573
*.out
7674
*.test
7775
*.so
78-
web/
7976
# IDE
8077
.idea/
8178
.vscode/
82-
79+
.claude
8380
# Docker
8481
nodepass-release.*
8582
.ignore
8683
logs/
8784
certs/
88-
gob/
85+
gob/
86+
pkg/
87+
CLAUDE.md

Dockerfile

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,25 @@
44
# ========= 前端构建阶段 =========
55
FROM node:20-alpine AS frontend-builder
66

7-
# 安装必要工具(包括 zip)
8-
RUN apk add --no-cache zip
9-
107
# 使用 corepack 预装 pnpm
118
RUN corepack enable && corepack prepare pnpm@latest --activate
129

13-
WORKDIR /app
10+
# 设置 pnpm 环境变量,避免交互式提示
11+
ENV PNPM_HOME="/pnpm"
12+
ENV PATH="$PNPM_HOME:$PATH"
13+
ENV CI=true
1414

15-
# 缓存依赖层
16-
COPY package.json pnpm-lock.yaml ./
17-
RUN pnpm install --frozen-lockfile --prod=false
15+
WORKDIR /app
1816

1917
# 复制前端源代码
20-
COPY . .
21-
22-
# 运行构建脚本,生成静态文件到 dist/
23-
RUN pnpm build
18+
COPY web/ ./web/
2419

25-
# 📦 压缩前端文件为 dist.zip(Go embed 需要)
26-
RUN cd dist && zip -r ../dist.zip . && cd ..
27-
28-
# 📋 复制 dist.zip 到 cmd/server/ 目录(Go embed 需要)
29-
RUN cp dist.zip cmd/server/
30-
31-
# 清理 dev 依赖,减少后续镜像体积
32-
RUN pnpm prune --prod
20+
# 进入 web 目录,清理并安装依赖,然后构建
21+
RUN cd web && \
22+
rm -rf node_modules && \
23+
pnpm install --frozen-lockfile --prod=false --ignore-scripts && \
24+
pnpm build && \
25+
pnpm prune --prod
3326

3427
# ========= Go 构建阶段 =========
3528
FROM golang:1.23-alpine AS backend-builder
@@ -50,8 +43,12 @@ ENV GOTIMEOUT=600s
5043
# 增加网络重试和下载超时
5144
RUN go mod download -x
5245

53-
# 复制剩余代码(包括先前前端生成的 dist)
54-
COPY --from=frontend-builder /app .
46+
# 复制 Go 后端代码
47+
COPY cmd/ ./cmd/
48+
COPY internal/ ./internal/
49+
50+
# 复制前端构建产物到 cmd/server/dist 目录
51+
COPY --from=frontend-builder /app/cmd/server/dist ./cmd/server/dist
5552

5653
# 启用 CGO 和设置编译标记以支持 musl
5754
ENV CGO_ENABLED=1
@@ -67,10 +64,8 @@ LABEL org.opencontainers.image.version=$VERSION
6764
ENV APP_VERSION=$VERSION
6865
WORKDIR /app
6966

70-
# 拷贝可执行文件、静态资源、public 目录
67+
# 只需要拷贝可执行文件(静态资源已通过 embed 嵌入)
7168
COPY --from=backend-builder /app/nodepassdash ./
72-
COPY --from=backend-builder /app/dist ./dist
73-
COPY --from=backend-builder /app/public ./public
7469

7570
# 默认端口
7671
EXPOSE 3000

0 commit comments

Comments
 (0)