diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..c537e98 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,95 @@ +name: 构建并发布应用 + +on: + push: + branches: [ main, master ] + pull_request: + branches: [ main, master ] + workflow_dispatch: + +jobs: + build: + name: 构建和发布 + runs-on: ubuntu-latest + + steps: + - name: 检出代码 + uses: actions/checkout@v4 + + - name: 设置Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: 安装pnpm + uses: pnpm/action-setup@v3 + with: + version: 8 + + - name: 安装前端依赖 + run: pnpm install + + - name: 构建前端 + run: pnpm run build + + - name: 设置Go环境 + uses: actions/setup-go@v5 + with: + go-version: '1.21' + + - name: 安装UPX + run: sudo apt-get update && sudo apt-get install -y upx + + - name: 构建应用 + run: bash build.auto.release.sh + + - name: 上传Windows无GUI版本 + uses: actions/upload-artifact@v4 + with: + name: miao-directory-amd64-win + path: miao-directory-amd64-win.exe + + - name: 上传Windows无GUI压缩版本 + uses: actions/upload-artifact@v4 + with: + name: miao-directory-amd64-win-upx + path: miao-directory-amd64-win.upx.exe + + - name: 上传Windows GUI版本 + uses: actions/upload-artifact@v4 + with: + name: miao-directory-amd64-win-gui + path: miao-directory-amd64-win.gui.exe + + - name: 上传Windows GUI压缩版本 + uses: actions/upload-artifact@v4 + with: + name: miao-directory-amd64-win-gui-upx + path: miao-directory-amd64-win.gui.upx.exe + + - name: 上传Linux版本 + uses: actions/upload-artifact@v4 + with: + name: miao-directory-amd64-linux + path: miao-directory-amd64-linux + + - name: 生成版本号 + id: version + run: | + echo "date=$(date +'%Y%m%d%H%M')" >> $GITHUB_OUTPUT + echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + + - name: 创建自动发布 + 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 }} + tag_name: auto-${{ steps.version.outputs.date }}-${{ steps.version.outputs.sha_short }} + draft: false + prerelease: true + files: | + miao-directory-amd64-win.exe + miao-directory-amd64-win.upx.exe + miao-directory-amd64-win.gui.exe + miao-directory-amd64-win.gui.upx.exe + miao-directory-amd64-linux \ No newline at end of file diff --git a/build.auto.release.sh b/build.auto.release.sh index 2e4cf67..8f20993 100644 --- a/build.auto.release.sh +++ b/build.auto.release.sh @@ -33,7 +33,7 @@ go build -ldflags="-s -w" -o ../miao-directory-amd64-win.exe # 尝试UPX压缩Windows无GUI版本 if check_upx; then echo "正在压缩Windows无GUI版本" - upx -9 -o ../miao-directory-amd64-win.upx.exe ../miao-directory-amd64-win.exe + upx --ultra-brute -o ../miao-directory-amd64-win.upx.exe ../miao-directory-amd64-win.exe fi # 构建不带GUI版本(Linux) @@ -49,7 +49,7 @@ go build -tags webview -ldflags="-s -w -H=windowsgui" -o ../miao-directory-amd64 # 尝试UPX压缩Windows GUI版本 if check_upx; then echo "正在压缩Windows GUI版本" - upx -9 -o ../miao-directory-amd64-win.gui.upx.exe ../miao-directory-amd64-win.gui.exe + upx --ultra-brute -o ../miao-directory-amd64-win.gui.upx.exe ../miao-directory-amd64-win.gui.exe fi # 如果需要为Linux构建带GUI版本,需要系统安装相应的依赖 diff --git a/package.json b/package.json index 714ac9a..8e519f7 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:auto:release": "bash build.auto.release.sh", + "build:release": "bash build.auto.release.sh", "preview": "vite preview", "format": "prettier --write src/" },