From 9ee472e5de07f41b138dae69b36665b0fb821de7 Mon Sep 17 00:00:00 2001 From: Miao_Spring <539943419@qq.com> Date: Sat, 23 Aug 2025 01:47:42 +0800 Subject: [PATCH] =?UTF-8?q?ci:=20=E9=87=8D=E6=9E=84=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E4=BB=A5=E4=BD=BF=E7=94=A8output=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E5=AD=98=E5=82=A8=E4=BA=A7=E7=89=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改构建脚本和CI配置,将所有构建产物统一输出到output目录 更新.gitignore添加output目录忽略 调整CI工作流中的文件路径匹配规则 --- .github/workflows/build.yml | 8 ++-- .gitignore | 1 + build.auto.release.sh | 75 ++++++++++++++++++------------------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e6c4499..881bc47 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -53,15 +53,15 @@ jobs: - name: 显示构建产物 run: | - ls -la - find . -name "miao-directory*" -type f + ls -la output || true + find output -type f -name "miao-directory*" || true - name: 上传构建产物 uses: actions/upload-artifact@v4 with: name: miao-directory-all path: | - **/miao-directory* + output/** - name: 生成版本号 id: version @@ -78,6 +78,6 @@ jobs: draft: false prerelease: false files: | - **/miao-directory* + output/** env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index a521ac8..3f7f661 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ lerna-debug.log* node_modules dist +output/ dist-ssr *.local diff --git a/build.auto.release.sh b/build.auto.release.sh index da1282b..506556d 100644 --- a/build.auto.release.sh +++ b/build.auto.release.sh @@ -2,6 +2,7 @@ set -Eeuo pipefail IFS=$'\n\t' SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +OUT_DIR="$SCRIPT_DIR/output" # 解析命令行参数 FULL_BUILD=false @@ -37,6 +38,7 @@ require_cmd() { # 清理已有构建产物 echo "清理已有构建产物..." +mkdir -p "$OUT_DIR" # 基础前缀 PREFIX="miao-directory" @@ -53,7 +55,7 @@ BASE_ARCHOS=( # 清理基础构建产物 for suffix in "${BASE_ARCHOS[@]}"; do - [ -f "./$PREFIX-$suffix" ] && rm "./$PREFIX-$suffix" + [ -f "$OUT_DIR/$PREFIX-$suffix" ] && rm "$OUT_DIR/$PREFIX-$suffix" done # 如果是完整构建,清理额外架构产物 @@ -73,7 +75,7 @@ if [ "$FULL_BUILD" = true ]; then # 清理特殊版本产物 for suffix in "${SPECIAL_ARCHOS[@]}"; do - [ -f "./$PREFIX-$suffix" ] && rm "./$PREFIX-$suffix" + [ -f "$OUT_DIR/$PREFIX-$suffix" ] && rm "$OUT_DIR/$PREFIX-$suffix" done # 处理带x-前缀的不同系统和架构 @@ -83,7 +85,7 @@ if [ "$FULL_BUILD" = true ]; then # OpenBSD系列 "openbsd:amd64,arm64,386" # Windows额外架构 - "win.exe:386" + "windows:arm64" # Linux额外架构 "linux:386,mips,mips64,mips64le,ppc64,ppc64le,riscv64,s390x" ) @@ -97,7 +99,7 @@ if [ "$FULL_BUILD" = true ]; then IFS="," read -ra arch_array <<< "$archs" for arch in "${arch_array[@]}"; do file="$PREFIX-x-$arch-$os" - [ -f "./$file" ] && rm "./$file" + [ -f "$OUT_DIR/$file" ] && rm "$OUT_DIR/$file" done done fi @@ -123,17 +125,17 @@ echo "===== 开始构建阶段 =====" echo "构建基础版本..." # Windows AMD64 无GUI -echo "构建 Windows AMD64 无GUI 版本" -GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o "$SCRIPT_DIR/miao-directory-amd64-win.exe" +echo "构建 Win AMD64 无GUI 版本" +GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o "$OUT_DIR/miao-directory-amd64-win.exe" # Linux AMD64 无GUI echo "构建 Linux AMD64 无GUI 版本" -CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o "$SCRIPT_DIR/miao-directory-amd64-linux" -chmod +x "$SCRIPT_DIR/miao-directory-amd64-linux" +CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o "$OUT_DIR/miao-directory-amd64-linux" +chmod +x "$OUT_DIR/miao-directory-amd64-linux" # Windows AMD64 GUI -echo "构建 Windows AMD64 GUI 版本" -GOOS=windows GOARCH=amd64 go build -tags webview -ldflags="-s -w -H=windowsgui" -o "$SCRIPT_DIR/miao-directory-amd64-win.gui.exe" +echo "构建 Win AMD64 GUI 版本" +GOOS=windows GOARCH=amd64 go build -tags webview -ldflags="-s -w -H=windowsgui" -o "$OUT_DIR/miao-directory-amd64-win.gui.exe" # 完整构建 - 额外的系统和架构 if [ "$FULL_BUILD" = true ]; then @@ -159,36 +161,40 @@ if [ "$FULL_BUILD" = true ]; then to_upper() { printf "%s" "$1" | tr '[:lower:]' '[:upper:]' } - OS_LIST="linux darwin windows freebsd openbsd" - for os in $OS_LIST; do + OS_LIST=(linux darwin win freebsd openbsd) + for os in "${OS_LIST[@]}"; do echo "构建 $(uc_first "$os") 系列版本..." case "$os" in - linux) archs="arm64 386 mips mips64 mips64le ppc64 ppc64le riscv64 s390x" ;; - darwin) archs="amd64 arm64" ;; - windows) archs="arm64 386" ;; - freebsd) archs="amd64 arm64 386" ;; - openbsd) archs="amd64 arm64 386" ;; - *) archs="" ;; + linux) archs=(arm64 386 mips mips64 mips64le ppc64 ppc64le riscv64 s390x) ;; + darwin) archs=(amd64 arm64) ;; + win) archs=(arm64) ;; + freebsd) archs=(amd64 arm64 386) ;; + openbsd) archs=(amd64 arm64 386) ;; + *) archs=() ;; esac - for arch in $archs; do + for arch in "${archs[@]}"; do # 设置输出文件名后缀 suffix="" - if [ "$os" = "windows" ]; then + if [ "$os" = "win" ]; then suffix=".exe" fi echo "构建 $(uc_first "$os") $(to_upper "$arch") 版本" # 根据条件设置不同的输出文件名格式 - if [[ "$os" == "darwin" || ("$os" == "linux" && "$arch" == "arm64") || ("$os" == "windows" && "$arch" == "arm64") ]]; then - output_file="$SCRIPT_DIR/miao-directory-${arch}-${os}${suffix}" + if [[ "$os" == "darwin" || ("$os" == "linux" && "$arch" == "arm64") || ("$os" == "win" && "$arch" == "arm64") ]]; then + output_file="$OUT_DIR/miao-directory-${arch}-${os}${suffix}" else - output_file="$SCRIPT_DIR/miao-directory-x-${arch}-${os}${suffix}" + output_file="$OUT_DIR/miao-directory-x-${arch}-${os}${suffix}" fi - CGO_ENABLED=0 GOOS="$os" GOARCH="$arch" go build -ldflags="-s -w" -o "$output_file" - if [ "$os" != "windows" ]; then + GOOS_VAR="$os" + if [ "$os" = "win" ]; then + GOOS_VAR="windows" + fi + CGO_ENABLED=0 GOOS="$GOOS_VAR" GOARCH="$arch" go build -ldflags="-s -w" -o "$output_file" + if [ "$os" != "win" ]; then chmod +x "$output_file" fi done @@ -223,16 +229,16 @@ if check_upx; then echo "压缩基础版本..." # 压缩Windows无GUI版本 - echo "正在压缩Windows AMD64无GUI版本" - upx $COMPRESSION_LEVEL -o "$SCRIPT_DIR/miao-directory-amd64-win.upx.exe" "$SCRIPT_DIR/miao-directory-amd64-win.exe" + echo "正在压缩Win AMD64无GUI版本" + upx $COMPRESSION_LEVEL -o "$OUT_DIR/miao-directory-amd64-win.upx.exe" "$OUT_DIR/miao-directory-amd64-win.exe" # 压缩Linux AMD64版本 echo "正在压缩Linux AMD64版本" - upx $COMPRESSION_LEVEL -o "$SCRIPT_DIR/miao-directory-amd64-linux.upx" "$SCRIPT_DIR/miao-directory-amd64-linux" + upx $COMPRESSION_LEVEL -o "$OUT_DIR/miao-directory-amd64-linux.upx" "$OUT_DIR/miao-directory-amd64-linux" # 压缩Windows GUI版本 - echo "正在压缩Windows AMD64 GUI版本" - upx $COMPRESSION_LEVEL -o "$SCRIPT_DIR/miao-directory-amd64-win.gui.upx.exe" "$SCRIPT_DIR/miao-directory-amd64-win.gui.exe" + echo "正在压缩Win AMD64 GUI版本" + upx $COMPRESSION_LEVEL -o "$OUT_DIR/miao-directory-amd64-win.gui.upx.exe" "$OUT_DIR/miao-directory-amd64-win.gui.exe" # 压缩额外架构版本 if [ "$FULL_BUILD" = true ]; then @@ -240,15 +246,8 @@ if check_upx; then # 压缩Linux ARM64版本 echo "正在压缩Linux ARM64版本" - upx $COMPRESSION_LEVEL -o "$SCRIPT_DIR/miao-directory-arm64-linux.upx" "$SCRIPT_DIR/miao-directory-arm64-linux" + upx $COMPRESSION_LEVEL -o "$OUT_DIR/miao-directory-arm64-linux.upx" "$OUT_DIR/miao-directory-arm64-linux" - # # 压缩macOS AMD64版本 - # echo "正在压缩macOS AMD64版本" - # upx $COMPRESSION_LEVEL -o "$SCRIPT_DIR/miao-directory-amd64-darwin.upx" "$SCRIPT_DIR/miao-directory-amd64-darwin" - - # # 压缩macOS ARM64版本 - # echo "正在压缩macOS ARM64版本" - # upx $COMPRESSION_LEVEL -o "$SCRIPT_DIR/miao-directory-arm64-darwin.upx" "$SCRIPT_DIR/miao-directory-arm64-darwin" fi echo "所有压缩完成"