发布步骤改成直接 curl Gitea API
release / release (push) Successful in 31s

release-action 是 Go 程序,runner 镜像里没有 Go 工具链,
装工具链不如十几行 curl,还少一个第三方依赖。
This commit is contained in:
2026-08-12 15:45:29 +08:00
parent 944da9fee4
commit fbb2a824dc
+21 -7
View File
@@ -36,13 +36,27 @@ jobs:
tar -czf patchbay.tar.gz -C dist patchbay tar -czf patchbay.tar.gz -C dist patchbay
# version.txt 单独作为 asset 再传一份,install.sh check 用它比对版本, # version.txt 单独作为 asset 再传一份,install.sh check 用它比对版本,
# 不用把整个 tarball 拉下来 # 不用把整个 tarball 拉下来。
# 直接 curl Gitea 的 API 而不用现成 action:gitea.com/actions/release-action
# 是 Go 程序,runner 镜像里没有 Go 工具链,跑不起来
- name: 发布 Release - name: 发布 Release
uses: https://gitea.com/actions/release-action@main env:
with:
# 默认令牌建不了 Release 时(老版本 Gitea 的权限限制), # 默认令牌建不了 Release 时(老版本 Gitea 的权限限制),
# 在仓库 Settings → Actions → Secrets 里加一个 RELEASE_TOKEN # 在仓库 Settings → Actions → Secrets 里加一个 RELEASE_TOKEN
api_key: '${{ secrets.RELEASE_TOKEN || github.token }}' TOKEN: ${{ secrets.RELEASE_TOKEN || github.token }}
files: |- run: |
patchbay.tar.gz api="${GITHUB_SERVER_URL}/api/v1/repos/${GITHUB_REPOSITORY}"
version.txt 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