#!/bin/bash set -e # 发布 goffmpeg 库到 goproxy.cn 和 pkg.go.dev # 用法: ./scripts/publish.sh [version] # 示例: ./scripts/publish.sh v1.0.0 REPO_URL="ssh://git.kingecg.top:2222/kingecg/goffmpeg.git" MODULE_NAME="git.kingecg.top/kingecg/goffmpeg" GOPROXY_URL="https://goproxy.cn" # 检查未提交的更改 if [[ -n $(git status --porcelain) ]]; then echo "Error: 有未提交的更改,请先提交" exit 1 fi # 获取版本号 if [[ -z "$1" ]]; then echo "用法: $0 " echo "示例: $0 v1.0.0" exit 1 fi VERSION="$1" # 验证版本格式 if [[ ! "$VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "Error: 版本格式不正确,应为 vMAJOR.MINOR.PATCH (如 v1.0.0)" exit 1 fi echo "=== 发布 goffmpeg ===" echo "版本: $VERSION" echo "模块: $MODULE_NAME" echo "代理: $GOPROXY_URL" echo "" # 设置代理 export GOPROXY="$GOPROXY_URL,direct" # 创建 tag echo "1. 创建 tag: $VERSION" git tag -a "$VERSION" -m "Release $VERSION" HEAD # 推送 tag 到远程 echo "2. 推送 tag 到远程" git push "$REPO_URL" "$VERSION" # 通知代理 echo "3. 通知 goproxy.cn 抓取模块" curl -s "https://goproxy.cn/notify?pkg=$MODULE_NAME" || true echo "" echo "=== 发布完成 ===" echo "" echo "模块已发布到 goproxy.cn,可以直接使用:" echo " go get $MODULE_NAME@$VERSION" echo "" echo "访问: https://pkg.go.dev/$MODULE_NAME" echo "" echo "注意: goproxy.cn 会自动抓取公开的 Git tags"