ci: release upload 改用 Gitea API 直调
softprops/action-gh-release@v2 在 Gitea 上偶发不工作, 改用
Gitea 原生 API:
POST /repos/{owner}/{repo}/releases <- 创建 release
POST /repos/{owner}/{repo}/releases/{id}/assets <- 上传 binary
token 走 secrets.GITHUB_TOKEN (Gitea 自动注入平台 token),
api_url 走 \${{ github.api_url }} (Gitea 自动解析).
RELEASE_ID 从 POST /releases 响应 grep 出来 (用 -oP "id":\s*\K[0-9]+).
- PCRE 模式 (grep -P) 依赖 GNU grep, ubuntu 镜像自带有, alpine
runner 需要补 pcre 工具. 跟之前去 jq 一样是 runner 镜像依赖,
这次保留因为已经在用 \${{ secrets.GITHUB_TOKEN }} 这种 GitHub
风格 secret, runner 假定 ubuntu-family.
asset 上传字段是 attachment (Gitea API 文档要求, 不是 name).
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -71,11 +71,39 @@ jobs:
|
|||||||
- name: Build release binary
|
- name: Build release binary
|
||||||
run: GOOS=linux GOARCH=amd64 go build -o spark-mcp-linux-amd64 ./main.go
|
run: GOOS=linux GOARCH=amd64 go build -o spark-mcp-linux-amd64 ./main.go
|
||||||
|
|
||||||
- name: Upload release asset
|
- name: Upload release asset via Gitea API
|
||||||
uses: softprops/action-gh-release@v2
|
env:
|
||||||
with:
|
GITEA_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
files: spark-mcp-linux-amd64
|
run: |
|
||||||
generate_release_notes: true
|
# 1. 获取当前 Tag 名字 (例如 v0.0.1-beta)
|
||||||
|
TAG_NAME="${{ github.ref_name }}"
|
||||||
|
|
||||||
|
echo "正在为 Tag ${TAG_NAME} 创建 Gitea Release..."
|
||||||
|
|
||||||
|
# 2. 调用 Gitea API 创建一个 Release 并获取其 ID
|
||||||
|
# 注意:${{ github.api_url }} 会自动解析为你本地 Gitea 的 API 地址 (如 http://your-gitea/api/v1)
|
||||||
|
RELEASE_ID=$(curl -X POST "${{ github.api_url }}/repos/${{ github.repository }}/releases" \
|
||||||
|
-H "accept: application/json" \
|
||||||
|
-H "authorization: token ${GITEA_TOKEN}" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "{
|
||||||
|
\"tag_name\": \"${TAG_NAME}\",
|
||||||
|
\"target_commitish\": \"${{ github.sha }}\",
|
||||||
|
\"name\": \"Release ${TAG_NAME}\",
|
||||||
|
\"body\": \"Auto generated release assets.\",
|
||||||
|
\"draft\": false,
|
||||||
|
\"prerelease\": false
|
||||||
|
}" | grep -oP '"id":\s*\K[0-9]+' | head -n 1)
|
||||||
|
|
||||||
|
echo "Release 创建成功,ID 为: ${RELEASE_ID}"
|
||||||
|
|
||||||
|
# 3. 将你的二进制文件上传到该 Release 中
|
||||||
|
echo "开始上传文件 spark-mcp-linux-amd64 ..."
|
||||||
|
curl -X POST "${{ github.api_url }}/repos/${{ github.repository }}/releases/${RELEASE_ID}/assets" \
|
||||||
|
-H "accept: application/json" \
|
||||||
|
-H "authorization: token ${GITEA_TOKEN}" \
|
||||||
|
-H "Content-Type: multipart/form-data" \
|
||||||
|
-F "attachment=@spark-mcp-linux-amd64"
|
||||||
|
|
||||||
- name: Notify release via Bark
|
- name: Notify release via Bark
|
||||||
if: success()
|
if: success()
|
||||||
|
|||||||
Reference in New Issue
Block a user