mirror of
https://github.com/shadow1ng/fscan.git
synced 2025-09-14 14:06:44 +08:00
docs: 测试构建
This commit is contained in:
parent
f182732a8b
commit
a198aeabe5
31
.github/conf/.goreleaser.yml
vendored
31
.github/conf/.goreleaser.yml
vendored
@ -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
|
177
.github/workflows/release.yml
vendored
177
.github/workflows/release.yml
vendored
@ -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=""
|
||||||
|
release_status=""
|
||||||
|
else
|
||||||
|
build_status=""
|
||||||
|
release_status=""
|
||||||
|
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
|
||||||
|
|
||||||
if [ -d "dist" ]; then
|
# 基本信息
|
||||||
echo "### 📦 生成的文件:" >> $GITHUB_STEP_SUMMARY
|
echo "## 📋 发布信息" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
|
echo "" >> $GITHUB_STEP_SUMMARY
|
||||||
ls -la dist/ >> $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
|
||||||
|
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
|
||||||
|
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 >> $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
|
97
.github/workflows/test-build.yml
vendored
97
.github/workflows/test-build.yml
vendored
@ -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=""
|
build_status=""
|
||||||
else
|
else
|
||||||
build_status=""
|
build_status=""
|
||||||
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
|
|
Loading…
Reference in New Issue
Block a user