一键提交打标签和发布

## 操作规范

### 发布 GitHub Release

**当用户说 "提交打标签和发布" 时,自动执行以下完整流程(全部使用 GitHub HTTP API,无需 git tag/push tag):**

```bash
# 1. 提交所有更改
git add -A
git commit -m "feat: description

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>"

# 2. 推送代码
git push origin main

# 3. 从 git credential 获取 GitHub Token
GITHUB_TOKEN=$(echo "url=https://github.com" | git credential fill | grep password | cut -d= -f2)

# 4. 获取最新 commit hash
COMMIT_HASH=$(git rev-parse HEAD)

# 5. 获取当前最新 tag 并计算新版本
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v2.0.0")
NEW_TAG=$(echo "$LAST_TAG" | awk -F. '{print $1"."$2"."$3+1}')

# 6. 使用 GitHub API 创建 tag 引用
curl -s -X POST \
  -H "Authorization: Bearer $GITHUB_TOKEN" \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/repos/toohamster/sftp-cc/git/refs \
  -d "{\"ref\":\"refs/tags/$NEW_TAG\",\"sha\":\"$COMMIT_HASH\"}"

# 7. 使用 GitHub API 创建 Release
curl -s -X POST \
  -H "Authorization: Bearer $GITHUB_TOKEN" \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/repos/toohamster/sftp-cc/releases \
  -d "{\"tag_name\":\"$NEW_TAG\",\"target_commitish\":\"$COMMIT_HASH\",\"name\":\"$NEW_TAG - Release\",\"body\":\"Release $NEW_TAG\",\"draft\":false,\"prerelease\":false}"

注意:

  • JSON body 中禁止使用反引号 ` — 会被 bash 解析为命令替换
  • 使用 git credential fill 获取 token
  • 版本号自动递增:从上一个 tag 的 minor 版本 +1
  • 全部使用 HTTP API,无需 git taggit push tag
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容