feat: 优化构建流程
This commit is contained in:
1 parent
4a128e1aa1
commit
e6874d967a
4 files changed
+145
-33
No files matched your search
@@ -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:
|
||||
|
||||
+22
@@ -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
|
||||
|
||||
|
||||
+119
-29
@@ -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"
|
||||
echo "构建完成"
|
||||
echo "构建模式: $([ "$FULL_BUILD" = true ] && echo "完整构建" || echo "基础构建")"
|
||||
echo "压缩模式: $([ "$FAST_COMPRESSION" = true ] && echo "快速压缩" || echo "极限压缩")"
|
||||
+1
-1
@@ -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/"
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user