build: 优化 Docker/Workflow 构建,使用 Next.js 环境变量注入版本和构建时间,并移除对 package.json 的硬编码替换

This commit is contained in:
ryan
2026-06-11 20:18:49 +08:00
parent 7c125ccef2
commit 50533e1837
11 changed files with 37 additions and 46 deletions
+2
View File
@@ -59,6 +59,7 @@ jobs:
fi
echo "VERSION=$VERSION" >> "$GITHUB_ENV"
echo "BUILD_DATE=$(date -u +'%Y-%m-%d %H:%M:%S')" >> "$GITHUB_ENV"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
@@ -80,6 +81,7 @@ jobs:
outputs: type=image,name=${{ env.IMAGE }},push-by-digest=true,name-canonical=true,push=true
build-args: |
VERSION=${{ env.VERSION }}
BUILD_DATE=${{ env.BUILD_DATE }}
cache-from: type=gha,scope=docker-server-${{ matrix.arch }}
cache-to: type=gha,mode=max,ignore-error=true,timeout=20m,scope=docker-server-${{ matrix.arch }}
+3 -23
View File
@@ -103,30 +103,10 @@ jobs:
working-directory: ${{ env.FRONTEND_DIR }}
run: pnpm install --frozen-lockfile
- name: Stamp frontend package metadata
working-directory: ${{ env.FRONTEND_DIR }}
shell: bash
env:
VERSION: ${{ needs.create-release.outputs.version_without_v }}
BUILD_DATE: ${{ needs.create-release.outputs.build_date }}
run: |
set -euo pipefail
if [[ -f package.json ]]; then
node - <<'NODE'
const fs = require('fs');
const path = './package.json';
const pkg = JSON.parse(fs.readFileSync(path, 'utf8'));
if (process.env.VERSION && Object.hasOwn(pkg, 'version')) {
pkg.version = process.env.VERSION;
}
if (process.env.BUILD_DATE && Object.hasOwn(pkg, 'buildDate')) {
pkg.buildDate = process.env.BUILD_DATE;
}
fs.writeFileSync(path, JSON.stringify(pkg, null, 2) + '\n');
NODE
fi
- name: Build frontend
env:
NEXT_PUBLIC_APP_VERSION: ${{ needs.create-release.outputs.version }}
NEXT_PUBLIC_APP_BUILD_DATE: ${{ needs.create-release.outputs.build_date }}
run: ${{ env.FRONTEND_BUILD_COMMAND }}
working-directory: ${{ env.FRONTEND_DIR }}