From fbb2a824dc429c43fe9be96a9a15e1cf790e465c Mon Sep 17 00:00:00 2001 From: Jz0ojiang Date: Wed, 12 Aug 2026 15:45:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E6=AD=A5=E9=AA=A4=E6=94=B9?= =?UTF-8?q?=E6=88=90=E7=9B=B4=E6=8E=A5=20curl=20Gitea=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit release-action 是 Go 程序,runner 镜像里没有 Go 工具链, 装工具链不如十几行 curl,还少一个第三方依赖。 --- .gitea/workflows/release.yml | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index ac6ac1e..b1aa718 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -36,13 +36,27 @@ jobs: tar -czf patchbay.tar.gz -C dist patchbay # version.txt 单独作为 asset 再传一份,install.sh check 用它比对版本, - # 不用把整个 tarball 拉下来 + # 不用把整个 tarball 拉下来。 + # 直接 curl Gitea 的 API 而不用现成 action:gitea.com/actions/release-action + # 是 Go 程序,runner 镜像里没有 Go 工具链,跑不起来 - name: 发布 Release - uses: https://gitea.com/actions/release-action@main - with: + env: # 默认令牌建不了 Release 时(老版本 Gitea 的权限限制), # 在仓库 Settings → Actions → Secrets 里加一个 RELEASE_TOKEN - api_key: '${{ secrets.RELEASE_TOKEN || github.token }}' - files: |- - patchbay.tar.gz - version.txt + TOKEN: ${{ secrets.RELEASE_TOKEN || github.token }} + run: | + api="${GITHUB_SERVER_URL}/api/v1/repos/${GITHUB_REPOSITORY}" + auth="Authorization: token ${TOKEN}" + # 建 Release;已存在(同一个 tag 重跑)就查回它的 id + resp="$(curl -fsS -X POST -H "$auth" -H 'Content-Type: application/json' \ + -d "{\"tag_name\":\"${GITHUB_REF_NAME}\",\"name\":\"${GITHUB_REF_NAME}\"}" \ + "$api/releases" \ + || curl -fsS -H "$auth" "$api/releases/tags/${GITHUB_REF_NAME}")" + # 响应里第一个 "id" 就是 release 自己的(嵌套对象如 author 排在它后面) + id="$(printf '%s' "$resp" | grep -o '"id":[0-9]*' | head -n1 | cut -d: -f2)" + [ -n "$id" ] || { echo "没拿到 release id,响应: $resp"; exit 1; } + for f in patchbay.tar.gz version.txt; do + curl -fsS -X POST -H "$auth" -F "attachment=@${f}" \ + "$api/releases/${id}/assets?name=${f}" >/dev/null + echo "已上传 $f" + done