feat: 优化构建流程

This commit is contained in:
539943419 committed 2025-03-23 11:54:52 +08:00
1 parent 4a128e1aa1
commit e6874d967a
4 files changed
+145 -33

No files matched your search

+3 -3
View File
@@ -49,7 +49,7 @@ jobs:
run: sudo apt-get update && sudo apt-get install -y upx run: sudo apt-get update && sudo apt-get install -y upx
- name: 构建应用 - name: 构建应用
run: bash build.auto.release.sh run: bash build.auto.release.sh -full
- name: 显示构建产物 - name: 显示构建产物
run: | run: |
@@ -73,10 +73,10 @@ jobs:
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')
uses: softprops/action-gh-release@v1 uses: softprops/action-gh-release@v1
with: with:
name: 自动发布 ${{ steps.version.outputs.date }}-${{ steps.version.outputs.sha_short }} name: Auto-Build-${{ steps.version.outputs.date }}-${{ steps.version.outputs.sha_short }}
tag_name: auto-${{ steps.version.outputs.date }}-${{ steps.version.outputs.sha_short }} tag_name: auto-${{ steps.version.outputs.date }}-${{ steps.version.outputs.sha_short }}
draft: false draft: false
prerelease: true prerelease: false
files: | files: |
**/miao-directory* **/miao-directory*
env: env:
+22
View File
@@ -37,6 +37,28 @@ miao-directory-amd64-win.gui.exe~
miao-directory-amd64-win.upx.exe~ miao-directory-amd64-win.upx.exe~
miao-directory-amd64-win.gui.upx.exe~ miao-directory-amd64-win.gui.upx.exe~
# Linux 压缩版本
miao-directory-amd64-linux.upx
miao-directory-amd64-linux.upx~
# Linux ARM64 版本
miao-directory-arm64-linux
miao-directory-arm64-linux~
miao-directory-arm64-linux.upx
miao-directory-arm64-linux.upx~
# macOS AMD64 版本
miao-directory-amd64-darwin
miao-directory-amd64-darwin~
miao-directory-amd64-darwin.upx
miao-directory-amd64-darwin.upx~
# macOS ARM64 版本
miao-directory-arm64-darwin
miao-directory-arm64-darwin~
miao-directory-arm64-darwin.upx
miao-directory-arm64-darwin.upx~
test test
stats.html stats.html
+119 -29
View File
@@ -1,5 +1,20 @@
#!/bin/bash #!/bin/bash
# 解析命令行参数
FULL_BUILD=false
FAST_COMPRESSION=false
for arg in "$@"; do
case $arg in
-full)
FULL_BUILD=true
;;
-fast)
FAST_COMPRESSION=true
;;
esac
done
# 检查UPX是否存在 # 检查UPX是否存在
check_upx() { check_upx() {
if command -v upx &> /dev/null; then if command -v upx &> /dev/null; then
@@ -11,61 +26,136 @@ check_upx() {
fi fi
} }
# 仅在文件存在时删除 # 清理已有构建产物
echo "清理已有构建产物..."
[ -f "./miao-directory-amd64-win.exe" ] && rm ./miao-directory-amd64-win.exe [ -f "./miao-directory-amd64-win.exe" ] && rm ./miao-directory-amd64-win.exe
[ -f "./miao-directory-amd64-win.upx.exe" ] && rm ./miao-directory-amd64-win.upx.exe [ -f "./miao-directory-amd64-win.upx.exe" ] && rm ./miao-directory-amd64-win.upx.exe
[ -f "./miao-directory-amd64-win.gui.exe" ] && rm ./miao-directory-amd64-win.gui.exe [ -f "./miao-directory-amd64-win.gui.exe" ] && rm ./miao-directory-amd64-win.gui.exe
[ -f "./miao-directory-amd64-win.gui.upx.exe" ] && rm ./miao-directory-amd64-win.gui.upx.exe [ -f "./miao-directory-amd64-win.gui.upx.exe" ] && rm ./miao-directory-amd64-win.gui.upx.exe
[ -f "./miao-directory-amd64-linux" ] && rm ./miao-directory-amd64-linux [ -f "./miao-directory-amd64-linux" ] && rm ./miao-directory-amd64-linux
[ -f "./miao-directory-amd64-linux.upx" ] && rm ./miao-directory-amd64-linux.upx
# 如果是完整构建,清理额外架构产物
if [ "$FULL_BUILD" = true ]; then
echo "完整构建模式,清理额外架构产物..."
[ -f "./miao-directory-arm64-linux" ] && rm ./miao-directory-arm64-linux
[ -f "./miao-directory-arm64-linux.upx" ] && rm ./miao-directory-arm64-linux.upx
[ -f "./miao-directory-amd64-darwin" ] && rm ./miao-directory-amd64-darwin
[ -f "./miao-directory-amd64-darwin.upx" ] && rm ./miao-directory-amd64-darwin.upx
[ -f "./miao-directory-arm64-darwin" ] && rm ./miao-directory-arm64-darwin
[ -f "./miao-directory-arm64-darwin.upx" ] && rm ./miao-directory-arm64-darwin.upx
fi
echo "构建前端..."
pnpm run build pnpm run build
echo "复制前端文件到服务端..."
rm -rf ./src-server/web/* rm -rf ./src-server/web/*
# 确保目标目录存在
mkdir -p ./src-server/web/ mkdir -p ./src-server/web/
cp -r ./dist/* ./src-server/web/ cp -r ./dist/* ./src-server/web/
cd ./src-server cd ./src-server
# 构建不带GUI版本(Windows) # ===== 构建阶段 =====
echo "building amd64 win (no GUI)" echo "===== 开始构建阶段 ====="
# 基础构建 - 始终构建的版本
echo "构建基础版本..."
# Windows AMD64 无GUI
echo "构建 Windows AMD64 无GUI 版本"
go env -w GOOS=windows GOARCH=amd64 go env -w GOOS=windows GOARCH=amd64
go build -ldflags="-s -w" -o ../miao-directory-amd64-win.exe go build -ldflags="-s -w" -o ../miao-directory-amd64-win.exe
# 尝试UPX压缩Windows无GUI版本 # Linux AMD64 无GUI
if check_upx; then echo "构建 Linux AMD64 无GUI 版本"
echo "正在压缩Windows无GUI版本"
upx --ultra-brute -o ../miao-directory-amd64-win.upx.exe ../miao-directory-amd64-win.exe
fi
# 构建不带GUI版本(Linux)
echo "building amd64 linux (no GUI)"
go env -w GOOS=linux GOARCH=amd64 go env -w GOOS=linux GOARCH=amd64
# 禁用CGO以避免架构不匹配问题
export CGO_ENABLED=0 export CGO_ENABLED=0
go build -ldflags="-s -w" -o ../miao-directory-amd64-linux go build -ldflags="-s -w" -o ../miao-directory-amd64-linux
# 恢复CGO设置
export CGO_ENABLED=1 export CGO_ENABLED=1
# 构建带GUI版本(仅Windows,go-webview2主要针对Windows平台) # Windows AMD64 GUI
echo "building amd64 win with GUI" echo "构建 Windows AMD64 GUI 版本"
go env -w GOOS=windows GOARCH=amd64 go env -w GOOS=windows GOARCH=amd64
go build -tags webview -ldflags="-s -w -H=windowsgui" -o ../miao-directory-amd64-win.gui.exe go build -tags webview -ldflags="-s -w -H=windowsgui" -o ../miao-directory-amd64-win.gui.exe
# 尝试UPX压缩Windows GUI版本 # 完整构建 - 额外的系统和架构
if check_upx; then if [ "$FULL_BUILD" = true ]; then
echo "正在压缩Windows GUI版本" echo "构建额外架构版本..."
upx --ultra-brute -o ../miao-directory-amd64-win.gui.upx.exe ../miao-directory-amd64-win.gui.exe
# Linux ARM64
echo "构建 Linux ARM64 版本"
go env -w GOOS=linux GOARCH=arm64
export CGO_ENABLED=0
go build -ldflags="-s -w" -o ../miao-directory-arm64-linux
export CGO_ENABLED=1
# macOS AMD64
echo "构建 macOS AMD64 版本"
go env -w GOOS=darwin GOARCH=amd64
export CGO_ENABLED=0
go build -ldflags="-s -w" -o ../miao-directory-amd64-darwin
export CGO_ENABLED=1
# macOS ARM64 (Apple Silicon)
echo "构建 macOS ARM64 版本"
go env -w GOOS=darwin GOARCH=arm64
export CGO_ENABLED=0
go build -ldflags="-s -w" -o ../miao-directory-arm64-darwin
export CGO_ENABLED=1
fi fi
# 如果需要为Linux构建带GUI版本,需要系统安装相应的依赖 # ===== 压缩阶段 =====
# echo "building amd64 linux with GUI" echo "===== 开始压缩阶段 ====="
# go env -w GOOS=linux GOARCH=amd64
# go build -tags webview -ldflags="-s -w" -o ../miao-directory-gui-amd64-linux
# 可选:ARM64 Linux版本 # 检查是否可以进行UPX压缩
# go env -w GOOS=linux GOARCH=arm64 if check_upx; then
# go build -ldflags="-s -w" -o ../miao-directory-arm64-linux echo "开始压缩所有可执行文件..."
echo "build finish" # 设置压缩级别
COMPRESSION_LEVEL="--ultra-brute"
if [ "$FAST_COMPRESSION" = true ]; then
echo "使用快速压缩模式"
COMPRESSION_LEVEL="--fast"
else
echo "使用极限压缩模式"
fi
# 压缩基础版本
echo "压缩基础版本..."
# 压缩Windows无GUI版本
echo "正在压缩Windows AMD64无GUI版本"
upx $COMPRESSION_LEVEL -o ../miao-directory-amd64-win.upx.exe ../miao-directory-amd64-win.exe
# 压缩Linux AMD64版本
echo "正在压缩Linux AMD64版本"
upx $COMPRESSION_LEVEL -o ../miao-directory-amd64-linux.upx ../miao-directory-amd64-linux
# 压缩Windows GUI版本
echo "正在压缩Windows AMD64 GUI版本"
upx $COMPRESSION_LEVEL -o ../miao-directory-amd64-win.gui.upx.exe ../miao-directory-amd64-win.gui.exe
# 压缩额外架构版本
if [ "$FULL_BUILD" = true ]; then
echo "压缩额外架构版本..."
# 压缩Linux ARM64版本
echo "正在压缩Linux ARM64版本"
upx $COMPRESSION_LEVEL -o ../miao-directory-arm64-linux.upx ../miao-directory-arm64-linux
# 压缩macOS AMD64版本
echo "正在压缩macOS AMD64版本"
upx $COMPRESSION_LEVEL -o ../miao-directory-amd64-darwin.upx ../miao-directory-amd64-darwin
# 压缩macOS ARM64版本
echo "正在压缩macOS ARM64版本"
upx $COMPRESSION_LEVEL -o ../miao-directory-arm64-darwin.upx ../miao-directory-arm64-darwin
fi
echo "所有压缩完成"
fi
echo "构建完成"
echo "构建模式: $([ "$FULL_BUILD" = true ] && echo "完整构建" || echo "基础构建")"
echo "压缩模式: $([ "$FAST_COMPRESSION" = true ] && echo "快速压缩" || echo "极限压缩")"
+1 -1
View File
@@ -8,7 +8,7 @@
"dev:host": "vite --host 0.0.0.0", "dev:host": "vite --host 0.0.0.0",
"build": "vue-tsc -b && vite build", "build": "vue-tsc -b && vite build",
"build:auto": "pnpm run build && go env -w GOOS=windows GOARCH=amd64 && rm -rf ./src-server/web/* && cp -r ./dist/* ./src-server/web/ && cd ./src-server && go env -w GOOS=windows && go build -o ../miao-directory.exe", "build:auto": "pnpm run build && go env -w GOOS=windows GOARCH=amd64 && rm -rf ./src-server/web/* && cp -r ./dist/* ./src-server/web/ && cd ./src-server && go env -w GOOS=windows && go build -o ../miao-directory.exe",
"build:release": "bash build.auto.release.sh", "build:fast": "bash build.auto.release.sh -fast",
"preview": "vite preview", "preview": "vite preview",
"format": "prettier --write src/" "format": "prettier --write src/"
}, },