diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 689203b..1456617 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -49,7 +49,7 @@ jobs: run: sudo apt-get update && sudo apt-get install -y upx - name: 构建应用 - run: bash build.auto.release.sh + run: bash build.auto.release.sh -full - name: 显示构建产物 run: | @@ -73,10 +73,10 @@ jobs: if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master') uses: softprops/action-gh-release@v1 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 }} draft: false - prerelease: true + prerelease: false files: | **/miao-directory* env: diff --git a/.gitignore b/.gitignore index e136a89..be103eb 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,28 @@ miao-directory-amd64-win.gui.exe~ miao-directory-amd64-win.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 stats.html diff --git a/build.auto.release.sh b/build.auto.release.sh index 08ead10..be90d76 100644 --- a/build.auto.release.sh +++ b/build.auto.release.sh @@ -1,5 +1,20 @@ #!/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是否存在 check_upx() { if command -v upx &> /dev/null; then @@ -11,61 +26,136 @@ check_upx() { fi } -# 仅在文件存在时删除 +# 清理已有构建产物 +echo "清理已有构建产物..." [ -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.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-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 +echo "复制前端文件到服务端..." rm -rf ./src-server/web/* - -# 确保目标目录存在 mkdir -p ./src-server/web/ cp -r ./dist/* ./src-server/web/ 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 build -ldflags="-s -w" -o ../miao-directory-amd64-win.exe -# 尝试UPX压缩Windows无GUI版本 -if check_upx; then - 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)" +# Linux AMD64 无GUI +echo "构建 Linux AMD64 无GUI 版本" go env -w GOOS=linux GOARCH=amd64 -# 禁用CGO以避免架构不匹配问题 export CGO_ENABLED=0 go build -ldflags="-s -w" -o ../miao-directory-amd64-linux -# 恢复CGO设置 export CGO_ENABLED=1 -# 构建带GUI版本(仅Windows,go-webview2主要针对Windows平台) -echo "building amd64 win with GUI" +# Windows AMD64 GUI +echo "构建 Windows AMD64 GUI 版本" go env -w GOOS=windows GOARCH=amd64 go build -tags webview -ldflags="-s -w -H=windowsgui" -o ../miao-directory-amd64-win.gui.exe -# 尝试UPX压缩Windows GUI版本 -if check_upx; then - echo "正在压缩Windows GUI版本" - upx --ultra-brute -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 版本" + 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 -# 如果需要为Linux构建带GUI版本,需要系统安装相应的依赖 -# echo "building amd64 linux with GUI" -# go env -w GOOS=linux GOARCH=amd64 -# go build -tags webview -ldflags="-s -w" -o ../miao-directory-gui-amd64-linux +# ===== 压缩阶段 ===== +echo "===== 开始压缩阶段 =====" -# 可选:ARM64 Linux版本 -# go env -w GOOS=linux GOARCH=arm64 -# go build -ldflags="-s -w" -o ../miao-directory-arm64-linux +# 检查是否可以进行UPX压缩 +if check_upx; then + echo "开始压缩所有可执行文件..." + + # 设置压缩级别 + 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 "build finish" \ No newline at end of file +echo "构建完成" +echo "构建模式: $([ "$FULL_BUILD" = true ] && echo "完整构建" || echo "基础构建")" +echo "压缩模式: $([ "$FAST_COMPRESSION" = true ] && echo "快速压缩" || echo "极限压缩")" \ No newline at end of file diff --git a/package.json b/package.json index 8e519f7..c4f5665 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "dev:host": "vite --host 0.0.0.0", "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:release": "bash build.auto.release.sh", + "build:fast": "bash build.auto.release.sh -fast", "preview": "vite preview", "format": "prettier --write src/" },