docs: 测试构建

This commit is contained in:
ZacharyZcR 2025-07-17 21:52:06 +08:00
parent f182732a8b
commit a198aeabe5
3 changed files with 204 additions and 99 deletions

View File

@ -1,3 +1,6 @@
# GoReleaser v2 配置文件
version: 2
# 项目名称 - 直接使用环境变量 # 项目名称 - 直接使用环境变量
project_name: "{{ .Env.PROJECT_NAME }}" project_name: "{{ .Env.PROJECT_NAME }}"
@ -38,7 +41,7 @@ builds:
- -X main.builtBy=goreleaser - -X main.builtBy=goreleaser
mod_timestamp: "{{ .CommitTimestamp }}" mod_timestamp: "{{ .CommitTimestamp }}"
# UPX 压缩 # UPX 压缩配置
upx: upx:
- ids: [default] - ids: [default]
enabled: true enabled: true
@ -46,7 +49,7 @@ upx:
goarch: ["amd64", "386"] goarch: ["amd64", "386"]
compress: best compress: best
brute: false brute: false
lzma: false lzma: true
# 归档配置 # 归档配置
archives: archives:
@ -116,10 +119,32 @@ release:
如有问题请提交 [Issue](https://github.com/{{ .Env.GITHUB_OWNER }}/{{ .Env.GITHUB_REPO }}/issues) 💬 如有问题请提交 [Issue](https://github.com/{{ .Env.GITHUB_OWNER }}/{{ .Env.GITHUB_REPO }}/issues) 💬
# 快照版本 # 快照版本配置
snapshot: snapshot:
name_template: "{{ incpatch .Version }}-dev-{{ .ShortCommit }}" name_template: "{{ incpatch .Version }}-dev-{{ .ShortCommit }}"
# 元数据 # 元数据
metadata: metadata:
mod_timestamp: "{{ .CommitTimestamp }}" mod_timestamp: "{{ .CommitTimestamp }}"
# 通用配置
env:
- GOPROXY=https://proxy.golang.org,direct
- GOSUMDB=sum.golang.org
- GOPRIVATE=
# 构建钩子
hooks:
pre:
- go test ./...
post:
- echo "构建完成"
# 全局标志
flags:
- -trimpath
# 全局环境变量
global_env:
- GO111MODULE=on
- CGO_ENABLED=0

View File

@ -10,6 +10,14 @@ on:
description: '发布标签' description: '发布标签'
required: true required: true
default: 'v1.0.0' default: 'v1.0.0'
draft:
description: '创建草稿发布'
type: boolean
default: false
prerelease:
description: '标记为预发布'
type: boolean
default: false
permissions: permissions:
contents: write contents: write
@ -41,11 +49,15 @@ jobs:
echo "owner=${GITHUB_REPOSITORY_OWNER}" >> $GITHUB_OUTPUT echo "owner=${GITHUB_REPOSITORY_OWNER}" >> $GITHUB_OUTPUT
echo "repo=${GITHUB_REPOSITORY#*/}" >> $GITHUB_OUTPUT echo "repo=${GITHUB_REPOSITORY#*/}" >> $GITHUB_OUTPUT
echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
echo "full_sha=${GITHUB_SHA}" >> $GITHUB_OUTPUT
echo "short_sha=${GITHUB_SHA:0:7}" >> $GITHUB_OUTPUT
echo "build_time=$(date '+%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_OUTPUT
echo "build_timestamp=$(date +%s)" >> $GITHUB_OUTPUT
- name: 🐹 设置 Go 环境 - name: 🐹 设置 Go 环境
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version: '1.21' go-version: '1.20'
cache: true cache: true
- name: 📦 下载依赖 - name: 📦 下载依赖
@ -63,28 +75,37 @@ jobs:
echo "Go 版本: $(go version)" echo "Go 版本: $(go version)"
echo "UPX 版本: $(upx --version)" echo "UPX 版本: $(upx --version)"
echo "Git 标签: ${{ steps.project.outputs.version }}" echo "Git 标签: ${{ steps.project.outputs.version }}"
echo "提交: ${{ steps.project.outputs.short_sha }}"
echo "仓库: ${{ steps.project.outputs.owner }}/${{ steps.project.outputs.repo }}" echo "仓库: ${{ steps.project.outputs.owner }}/${{ steps.project.outputs.repo }}"
- name: 🧪 运行测试
run: |
go test -v ./...
- name: 🔍 验证 GoReleaser 配置 - name: 🔍 验证 GoReleaser 配置
uses: goreleaser/goreleaser-action@v5 id: config_check
with: run: |
distribution: goreleaser if docker run --rm -v "$(pwd):/workspace" -w /workspace \
version: latest -e GITHUB_REPO="${{ github.event.repository.name }}" \
args: check -f .github/conf/.goreleaser.yml -e GITHUB_OWNER="${{ github.repository_owner }}" \
-e PROJECT_NAME="${{ github.event.repository.name }}" \
goreleaser/goreleaser:latest check -f .github/conf/.goreleaser.yml; then
echo "config_valid=true" >> $GITHUB_OUTPUT
else
echo "config_valid=false" >> $GITHUB_OUTPUT
fi
continue-on-error: true
- name: 🚀 构建和发布 - name: 🚀 构建和发布
id: build_step
uses: goreleaser/goreleaser-action@v5 uses: goreleaser/goreleaser-action@v5
with: with:
distribution: goreleaser distribution: goreleaser
version: latest version: latest
args: release --clean -f .github/conf/.goreleaser.yml args: release --clean -f .github/conf/.goreleaser.yml ${{ inputs.draft && '--draft' || '' }} ${{ inputs.prerelease && '--prerelease' || '' }}
workdir: . workdir: .
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPO: ${{ github.event.repository.name }}
GITHUB_OWNER: ${{ github.repository_owner }}
PROJECT_NAME: ${{ github.event.repository.name }}
continue-on-error: true
- name: 📋 上传构建产物 - name: 📋 上传构建产物
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
@ -95,21 +116,133 @@ jobs:
dist/ dist/
!dist/*.txt !dist/*.txt
retention-days: 30 retention-days: 30
continue-on-error: true
- name: 📊 生成构建报告 - name: 📊 生成发布报告
if: always() if: always()
run: | run: |
echo "## 🎉 构建完成报告" >> $GITHUB_STEP_SUMMARY # 计算构建时间
build_end_time=$(date +%s)
build_duration=$((build_end_time - ${{ steps.project.outputs.build_timestamp }}))
build_duration_formatted=$(printf "%02d:%02d" $((build_duration / 60)) $((build_duration % 60)))
# 构建状态
if [[ "${{ steps.build_step.outcome }}" == "success" ]]; then
build_status="![构建状态](https://img.shields.io/badge/构建-成功-brightgreen)"
release_status="![发布状态](https://img.shields.io/badge/发布-成功-brightgreen)"
else
build_status="![构建状态](https://img.shields.io/badge/构建-失败-red)"
release_status="![发布状态](https://img.shields.io/badge/发布-失败-red)"
fi
echo "# 🎉 发布构建报告" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
echo "- **版本**: ${{ steps.project.outputs.version }}" >> $GITHUB_STEP_SUMMARY echo "$build_status $release_status" >> $GITHUB_STEP_SUMMARY
echo "- **仓库**: ${{ steps.project.outputs.owner }}/${{ steps.project.outputs.repo }}" >> $GITHUB_STEP_SUMMARY
echo "- **Go 版本**: $(go version | cut -d' ' -f3)" >> $GITHUB_STEP_SUMMARY
echo "- **构建时间**: $(date)" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
# 基本信息
echo "## 📋 发布信息" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| 项目 | 信息 |" >> $GITHUB_STEP_SUMMARY
echo "|------|------|" >> $GITHUB_STEP_SUMMARY
echo "| 🏷️ **仓库** | ${{ steps.project.outputs.owner }}/${{ steps.project.outputs.repo }} |" >> $GITHUB_STEP_SUMMARY
echo "| 🏷️ **版本** | \`${{ steps.project.outputs.version }}\` |" >> $GITHUB_STEP_SUMMARY
echo "| 📝 **提交** | \`${{ steps.project.outputs.short_sha }}\` |" >> $GITHUB_STEP_SUMMARY
echo "| ⏰ **构建时间** | ${{ steps.project.outputs.build_time }} |" >> $GITHUB_STEP_SUMMARY
echo "| ⏱️ **构建耗时** | ${build_duration_formatted} |" >> $GITHUB_STEP_SUMMARY
echo "| 🐹 **Go 版本** | $(go version | cut -d' ' -f3) |" >> $GITHUB_STEP_SUMMARY
echo "| 📦 **发布类型** | $(if [[ "${{ inputs.draft }}" == "true" ]]; then echo "草稿"; elif [[ "${{ inputs.prerelease }}" == "true" ]]; then echo "预发布"; else echo "正式发布"; fi) |" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
# 构建结果
echo "## 🚀 构建结果" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [[ "${{ steps.config_check.outputs.config_valid }}" == "true" ]]; then
config_status="✅ 配置有效"
else
config_status="❌ 配置无效"
fi
echo "| 构建阶段 | 状态 |" >> $GITHUB_STEP_SUMMARY
echo "|----------|------|" >> $GITHUB_STEP_SUMMARY
echo "| 🔍 **配置验证** | $config_status |" >> $GITHUB_STEP_SUMMARY
if [[ "${{ steps.build_step.outcome }}" == "success" ]]; then
echo "| 🏗️ **构建发布** | ✅ 成功 |" >> $GITHUB_STEP_SUMMARY
else
echo "| 🏗️ **构建发布** | ❌ 失败 |" >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY
# 发布产物
if [ -d "dist" ]; then if [ -d "dist" ]; then
echo "### 📦 生成的文件:" >> $GITHUB_STEP_SUMMARY echo "## 📦 发布产物" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
total_size=$(du -sh dist/ | cut -f1)
file_count=$(find dist/ -type f | wc -l)
echo "**📊 总体统计:**" >> $GITHUB_STEP_SUMMARY
echo "- 📁 总文件数: $file_count" >> $GITHUB_STEP_SUMMARY
echo "- 📏 总大小: $total_size" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
# 统计各平台文件
echo "**🌍 平台分布:**" >> $GITHUB_STEP_SUMMARY
linux_count=$(find dist/ -name "*linux*" -type f | wc -l)
darwin_count=$(find dist/ -name "*darwin*" -type f | wc -l)
windows_count=$(find dist/ -name "*windows*" -type f | wc -l)
echo "- 🐧 Linux: $linux_count 个文件" >> $GITHUB_STEP_SUMMARY
echo "- 🍎 macOS: $darwin_count 个文件" >> $GITHUB_STEP_SUMMARY
echo "- 🪟 Windows: $windows_count 个文件" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "<details>" >> $GITHUB_STEP_SUMMARY
echo "<summary>📋 详细文件列表</summary>" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
ls -la dist/ >> $GITHUB_STEP_SUMMARY ls -lah dist/ >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "</details>" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "<details>" >> $GITHUB_STEP_SUMMARY
echo "<summary>📏 文件大小排序</summary>" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
du -h dist/* | sort -hr >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "</details>" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
fi
# 发布总结
echo "## 📋 发布总结" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [[ "${{ steps.build_step.outcome }}" == "success" ]]; then
echo "🎉 **发布成功!** 版本 \`${{ steps.project.outputs.version }}\` 已成功构建并发布到 GitHub Releases。" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "🔗 **发布链接:** https://github.com/${{ steps.project.outputs.owner }}/${{ steps.project.outputs.repo }}/releases/tag/${{ steps.project.outputs.version }}" >> $GITHUB_STEP_SUMMARY
else
echo "❌ **发布失败!** 请检查构建日志以了解失败原因。" >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY
echo "---" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "📎 **产物下载:** 构建产物已上传为 Artifact可在 Actions 页面下载。" >> $GITHUB_STEP_SUMMARY
echo "🔗 **提交链接:** https://github.com/${{ steps.project.outputs.owner }}/${{ steps.project.outputs.repo }}/commit/${{ steps.project.outputs.full_sha }}" >> $GITHUB_STEP_SUMMARY
echo "⏰ **发布完成时间:** $(date '+%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_STEP_SUMMARY
- name: 📬 发送通知
if: always()
run: |
if [[ "${{ steps.build_step.outcome }}" == "success" ]]; then
echo "✅ 发布成功通知已准备就绪"
# 这里可以添加发送成功通知的逻辑(如 Slack、邮件等
else
echo "❌ 发布失败通知已准备就绪"
# 这里可以添加发送失败通知的逻辑
fi fi

View File

@ -74,23 +74,19 @@ jobs:
echo "分支: ${{ steps.project.outputs.branch }}" echo "分支: ${{ steps.project.outputs.branch }}"
echo "提交: ${{ steps.project.outputs.short_sha }}" echo "提交: ${{ steps.project.outputs.short_sha }}"
echo "仓库: ${{ steps.project.outputs.owner }}/${{ steps.project.outputs.repo }}" echo "仓库: ${{ steps.project.outputs.owner }}/${{ steps.project.outputs.repo }}"
echo "环境变量:"
echo "- GITHUB_OWNER: $GITHUB_OWNER"
echo "- GITHUB_REPO: $GITHUB_REPO"
echo "- PROJECT_NAME: $PROJECT_NAME"
- name: 🔍 验证 GoReleaser 配置 - name: 🔍 验证 GoReleaser 配置
id: config_check id: config_check
run: | run: |
echo "config_start_time=$(date +%s)" >> $GITHUB_OUTPUT if docker run --rm -v "$(pwd):/workspace" -w /workspace \
-e GITHUB_REPO="${{ github.event.repository.name }}" \
if docker run --rm -v "$(pwd):/workspace" -w /workspace goreleaser/goreleaser:latest check -f .github/conf/.goreleaser.yml; then -e GITHUB_OWNER="${{ github.repository_owner }}" \
-e PROJECT_NAME="${{ github.event.repository.name }}" \
goreleaser/goreleaser:latest check -f .github/conf/.goreleaser.yml; then
echo "config_valid=true" >> $GITHUB_OUTPUT echo "config_valid=true" >> $GITHUB_OUTPUT
else else
echo "config_valid=false" >> $GITHUB_OUTPUT echo "config_valid=false" >> $GITHUB_OUTPUT
fi fi
echo "config_end_time=$(date +%s)" >> $GITHUB_OUTPUT
continue-on-error: true continue-on-error: true
- name: 🚀 测试构建 (Snapshot 模式) - name: 🚀 测试构建 (Snapshot 模式)
@ -103,10 +99,14 @@ jobs:
workdir: . workdir: .
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPO: ${{ github.event.repository.name }}
GITHUB_OWNER: ${{ github.repository_owner }}
PROJECT_NAME: ${{ github.event.repository.name }}
continue-on-error: true continue-on-error: true
- name: 📋 上传测试产物 - name: 📋 上传测试产物
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
if: always()
with: with:
name: 测试构建-${{ steps.project.outputs.branch }}-${{ steps.project.outputs.short_sha }} name: 测试构建-${{ steps.project.outputs.branch }}-${{ steps.project.outputs.short_sha }}
path: | path: |
@ -114,7 +114,7 @@ jobs:
retention-days: 7 retention-days: 7
continue-on-error: true continue-on-error: true
- name: 📊 生成测试报告 - name: 📊 生成构建报告
if: always() if: always()
run: | run: |
# 计算构建时间 # 计算构建时间
@ -122,17 +122,19 @@ jobs:
build_duration=$((build_end_time - ${{ steps.project.outputs.build_timestamp }})) build_duration=$((build_end_time - ${{ steps.project.outputs.build_timestamp }}))
build_duration_formatted=$(printf "%02d:%02d" $((build_duration / 60)) $((build_duration % 60))) build_duration_formatted=$(printf "%02d:%02d" $((build_duration / 60)) $((build_duration % 60)))
# 构建状态徽章 # 构建状态
if [[ "${{ steps.build_step.outcome }}" == "success" ]]; then if [[ "${{ steps.build_step.outcome }}" == "success" ]]; then
build_status="![构建状态](https://img.shields.io/badge/构建-成功-brightgreen)" build_status="![构建状态](https://img.shields.io/badge/构建-成功-brightgreen)"
else else
build_status="![构建状态](https://img.shields.io/badge/构建-失败-red)" build_status="![构建状态](https://img.shields.io/badge/构建-失败-red)"
fi fi
echo "# 🎯 构建报告" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "$build_status" >> $GITHUB_STEP_SUMMARY echo "$build_status" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
# 基本信息表格 # 基本信息
echo "## 📋 基本信息" >> $GITHUB_STEP_SUMMARY echo "## 📋 基本信息" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
echo "| 项目 | 信息 |" >> $GITHUB_STEP_SUMMARY echo "| 项目 | 信息 |" >> $GITHUB_STEP_SUMMARY
@ -142,9 +144,7 @@ jobs:
echo "| 📝 **提交** | \`${{ steps.project.outputs.short_sha }}\` |" >> $GITHUB_STEP_SUMMARY echo "| 📝 **提交** | \`${{ steps.project.outputs.short_sha }}\` |" >> $GITHUB_STEP_SUMMARY
echo "| ⏰ **构建时间** | ${{ steps.project.outputs.build_time }} |" >> $GITHUB_STEP_SUMMARY echo "| ⏰ **构建时间** | ${{ steps.project.outputs.build_time }} |" >> $GITHUB_STEP_SUMMARY
echo "| ⏱️ **构建耗时** | ${build_duration_formatted} |" >> $GITHUB_STEP_SUMMARY echo "| ⏱️ **构建耗时** | ${build_duration_formatted} |" >> $GITHUB_STEP_SUMMARY
echo "| 🏃 **运行环境** | Ubuntu Latest |" >> $GITHUB_STEP_SUMMARY
echo "| 🐹 **Go 版本** | $(go version | cut -d' ' -f3) |" >> $GITHUB_STEP_SUMMARY echo "| 🐹 **Go 版本** | $(go version | cut -d' ' -f3) |" >> $GITHUB_STEP_SUMMARY
echo "| 🗜️ **UPX 版本** | $(upx --version | head -n1 | cut -d' ' -f2) |" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
# 构建结果 # 构建结果
@ -157,25 +157,18 @@ jobs:
config_status="❌ 配置无效" config_status="❌ 配置无效"
fi fi
echo "| 构建阶段 | 状态 | 说明 |" >> $GITHUB_STEP_SUMMARY echo "| 构建阶段 | 状态 |" >> $GITHUB_STEP_SUMMARY
echo "|----------|------|------|" >> $GITHUB_STEP_SUMMARY echo "|----------|------|" >> $GITHUB_STEP_SUMMARY
echo "| 🔍 **配置验证** | $config_status | GoReleaser配置文件检查 |" >> $GITHUB_STEP_SUMMARY echo "| 🔍 **配置验证** | $config_status |" >> $GITHUB_STEP_SUMMARY
if [[ "${{ steps.build_step.outcome }}" == "success" ]]; then if [[ "${{ steps.build_step.outcome }}" == "success" ]]; then
echo "| 🏗️ **快照构建** | ✅ 成功 | 二进制文件已生成 |" >> $GITHUB_STEP_SUMMARY echo "| 🏗️ **快照构建** | ✅ 成功 |" >> $GITHUB_STEP_SUMMARY
else else
echo "| 🏗️ **快照构建** | ❌ 失败 | 请检查构建日志 |" >> $GITHUB_STEP_SUMMARY echo "| 🏗️ **快照构建** | ❌ 失败 |" >> $GITHUB_STEP_SUMMARY
fi fi
binary_count="${{ steps.binary_test.outputs.binary_count }}"
tested_count="${{ steps.binary_test.outputs.tested_count }}"
passed_count="${{ steps.binary_test.outputs.passed_count }}"
failed_count="${{ steps.binary_test.outputs.failed_count }}"
echo "| 🧪 **二进制测试** | $(if [ "$failed_count" -eq 0 ]; then echo "✅ 通过"; else echo "❌ 部分失败"; fi) | $tested_count/$binary_count 已测试 |" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
# 构建产物统计 # 构建产物
if [ -d "dist" ]; then if [ -d "dist" ]; then
echo "## 📦 构建产物" >> $GITHUB_STEP_SUMMARY echo "## 📦 构建产物" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
@ -183,76 +176,30 @@ jobs:
total_size=$(du -sh dist/ | cut -f1) total_size=$(du -sh dist/ | cut -f1)
file_count=$(find dist/ -type f | wc -l) file_count=$(find dist/ -type f | wc -l)
echo "**📊 总体统计:**" >> $GITHUB_STEP_SUMMARY
echo "- 📁 总文件数: $file_count" >> $GITHUB_STEP_SUMMARY echo "- 📁 总文件数: $file_count" >> $GITHUB_STEP_SUMMARY
echo "- 📏 总大小: $total_size" >> $GITHUB_STEP_SUMMARY echo "- 📏 总大小: $total_size" >> $GITHUB_STEP_SUMMARY
if [ "$file_count" -gt 0 ]; then
avg_size=$(echo "scale=2; $(du -sk dist/ | cut -f1) / $file_count" | bc 2>/dev/null || echo "N/A")
echo "- 🗜️ 平均大小: ${avg_size} KB" >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
echo "<details>" >> $GITHUB_STEP_SUMMARY echo "<details>" >> $GITHUB_STEP_SUMMARY
echo "<summary>📋 详细文件列表</summary>" >> $GITHUB_STEP_SUMMARY echo "<summary>📋 详细文件列表</summary>" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
ls -lah dist/ | head -30 >> $GITHUB_STEP_SUMMARY ls -lah dist/ >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "</details>" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "<details>" >> $GITHUB_STEP_SUMMARY
echo "<summary>📏 文件大小排序</summary>" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
du -h dist/* | sort -hr | head -15 >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "</details>" >> $GITHUB_STEP_SUMMARY echo "</details>" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
fi fi
# 依赖信息
echo "## 📚 依赖信息" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "<details>" >> $GITHUB_STEP_SUMMARY
echo "<summary>📦 Go 模块依赖</summary>" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
go list -m all | head -20 >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "</details>" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
# 环境信息
echo "## 🔧 环境信息" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "<details>" >> $GITHUB_STEP_SUMMARY
echo "<summary>🖥️ 系统信息</summary>" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "操作系统: $(uname -a)" >> $GITHUB_STEP_SUMMARY
echo "CPU信息: $(nproc) cores" >> $GITHUB_STEP_SUMMARY
echo "内存信息: $(free -h | grep Mem | awk '{print $2}') total" >> $GITHUB_STEP_SUMMARY
echo "磁盘空间: $(df -h / | tail -1 | awk '{print $4}') available" >> $GITHUB_STEP_SUMMARY
echo "时区: $(date +%Z)" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "</details>" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
# 总结 # 总结
echo "## 📋 构建总结" >> $GITHUB_STEP_SUMMARY echo "## 📋 构建总结" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
# 确定整体状态
if [[ "${{ steps.build_step.outcome }}" == "success" ]]; then if [[ "${{ steps.build_step.outcome }}" == "success" ]]; then
echo "🎉 **构建成功!** 所有步骤都已完成,构建产物已生成并可供使用。" >> $GITHUB_STEP_SUMMARY echo "🎉 **构建成功!** 构建产物已生成并可供下载。" >> $GITHUB_STEP_SUMMARY
else else
echo "❌ **构建失败!** 请检查构建日志以了解失败原因。" >> $GITHUB_STEP_SUMMARY echo "❌ **构建失败!** 请检查构建日志以了解失败原因。" >> $GITHUB_STEP_SUMMARY
fi fi
echo "" >> $GITHUB_STEP_SUMMARY
echo "---" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY
echo "📎 **产物下载:** 构建产物已上传为 Artifact可在 Actions 页面下载。" >> $GITHUB_STEP_SUMMARY echo "📎 **产物下载:** 构建产物已上传为 Artifact可在 Actions 页面下载。" >> $GITHUB_STEP_SUMMARY
echo "🔗 **提交链接:** https://github.com/${{ steps.project.outputs.owner }}/${{ steps.project.outputs.repo }}/commit/${{ steps.project.outputs.full_sha }}" >> $GITHUB_STEP_SUMMARY echo "🔗 **提交链接:** https://github.com/${{ steps.project.outputs.owner }}/${{ steps.project.outputs.repo }}/commit/${{ steps.project.outputs.full_sha }}" >> $GITHUB_STEP_SUMMARY
echo "⏰ **构建完成时间:** $(date '+%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_STEP_SUMMARY