refactor: 优化发布流程 - PR 合并时触发,自动清理旧版本
主要改进: - 改为 PR 合并到 main 时触发(不是每次 push) - 自动删除超过 10 个的旧 Release,保持发布历史整洁 - 移除 prerelease 标记,所有自动构建都是正式 Release - 恢复使用 v 前缀的版本号格式 - 清理了现有的 Draft 状态 Release 工作流程: 1. PR 合并到 main 分支时自动构建并发布 2. 自动清理,只保留最近 10 个 Release 3. 手动触发 tag-release.yml 发布语义化版本 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -20,7 +20,9 @@
|
||||
"mcp__playwright__browser_navigate",
|
||||
"mcp__playwright__browser_click",
|
||||
"mcp__playwright__browser_tab_select",
|
||||
"Bash(gh pr merge:*)"
|
||||
"Bash(gh pr merge:*)",
|
||||
"Bash(gh release list:*)",
|
||||
"Bash(awk:*)"
|
||||
],
|
||||
"deny": []
|
||||
}
|
||||
|
||||
39
.github/workflows/release.yml
vendored
39
.github/workflows/release.yml
vendored
@@ -1,12 +1,9 @@
|
||||
name: Build and Release
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
types: [closed]
|
||||
branches: [ main ]
|
||||
paths:
|
||||
- '**.go'
|
||||
- 'go.mod'
|
||||
- 'go.sum'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
@@ -15,6 +12,8 @@ permissions:
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
# 只在 PR 被合并时运行,或手动触发
|
||||
if: (github.event.pull_request.merged == true) || (github.event_name == 'workflow_dispatch')
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
@@ -31,9 +30,9 @@ jobs:
|
||||
run: |
|
||||
TIMESTAMP=$(date +%Y.%m.%d.%H%M)
|
||||
COMMIT_SHA=$(git rev-parse --short HEAD)
|
||||
RELEASE_NAME="Build-${TIMESTAMP}-${COMMIT_SHA}"
|
||||
echo "release_name=${RELEASE_NAME}" >> $GITHUB_OUTPUT
|
||||
echo "Generated release: ${RELEASE_NAME}"
|
||||
VERSION="v${TIMESTAMP}-${COMMIT_SHA}"
|
||||
echo "version=${VERSION}" >> $GITHUB_OUTPUT
|
||||
echo "Generated version: ${VERSION}"
|
||||
|
||||
- name: Build for multiple platforms
|
||||
run: |
|
||||
@@ -54,13 +53,27 @@ jobs:
|
||||
GOOS=linux GOARCH=amd64 go build -o xiaohongshu-mcp-linux-amd64 .
|
||||
GOOS=linux GOARCH=amd64 go build -o xiaohongshu-login-linux-amd64 ./cmd/login
|
||||
|
||||
- name: Create Release (without permanent tag)
|
||||
- name: Clean up old releases
|
||||
run: |
|
||||
# 获取所有自动构建的 releases (v开头的时间戳格式)
|
||||
RELEASES=$(gh release list --limit 100 | grep -E '^v[0-9]{4}\.[0-9]{2}\.[0-9]{2}\.[0-9]{4}-' | awk '{print $3}' | tail -n +11)
|
||||
|
||||
# 删除超过 10 个的旧 releases 和对应的 tags
|
||||
for release in $RELEASES; do
|
||||
echo "Deleting old release: $release"
|
||||
gh release delete "$release" --yes --cleanup-tag
|
||||
done
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
continue-on-error: true
|
||||
|
||||
- name: Create Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
tag_name: ${{ steps.version.outputs.release_name }}
|
||||
name: ${{ steps.version.outputs.release_name }}
|
||||
tag_name: ${{ steps.version.outputs.version }}
|
||||
name: Release ${{ steps.version.outputs.version }}
|
||||
draft: false
|
||||
prerelease: true
|
||||
prerelease: false
|
||||
body: |
|
||||
## 🔧 自动构建版本
|
||||
|
||||
@@ -94,7 +107,7 @@ jobs:
|
||||
|
||||
- **Commit**: ${{ github.sha }}
|
||||
- **Branch**: main
|
||||
- **Build Time**: ${{ steps.version.outputs.release_name }}
|
||||
- **Build Time**: ${{ steps.version.outputs.version }}
|
||||
files: |
|
||||
xiaohongshu-mcp-darwin-arm64
|
||||
xiaohongshu-mcp-darwin-amd64
|
||||
|
||||
Reference in New Issue
Block a user