fix(release): Gitea 1.22 API использует name/body вместо title/note
Релиз: архив исходников / Упаковка и публикация релиза (push) Successful in 4s

Корневая причина всех пустых релизов: Gitea 1.22.1 API
принимает поля 'name'/'body' для POST и PATCH,
а 'title'/'note' молча игнорируются.

- POST CreateRelease: title/note  name/body
- PATCH EditRelease: title/note  name/body
- Добавлено логирование ответа PATCH для диагностики
- concurrency group предотвращает параллельные run'ы
This commit is contained in:
Dmitriy Fofanov
2026-02-25 16:52:34 +03:00
parent 6b900ccd9e
commit c4c5b6da25
+6 -6
View File
@@ -323,7 +323,7 @@ jobs:
if [ "${HOST}" = "github.com" ]; then
RELEASE_PAYLOAD="{\"tag_name\":\"${TAG}\",\"target_commitish\":\"${TARGET_COMMITISH}\",\"name\":\"${RELEASE_TITLE}\",\"body\":${BODY_JSON},\"draft\":false,\"prerelease\":false}"
else
RELEASE_PAYLOAD="{\"tag_name\":\"${TAG}\",\"target\":\"${TARGET_COMMITISH}\",\"title\":\"${RELEASE_TITLE}\",\"note\":${BODY_JSON},\"draft\":false,\"prerelease\":false}"
RELEASE_PAYLOAD="{\"tag_name\":\"${TAG}\",\"target_commitish\":\"${TARGET_COMMITISH}\",\"name\":\"${RELEASE_TITLE}\",\"body\":${BODY_JSON},\"draft\":false,\"prerelease\":false}"
fi
echo ">>> Создание релиза для тега ${TAG}..."
@@ -363,14 +363,13 @@ jobs:
exit 1
fi
# Always PATCH the release to guarantee title + note are set
# Always PATCH the release to guarantee name + body are set
# (handles race condition when parallel run creates empty release)
echo ">>> Обновление релиза (ID: ${RELEASE_ID}) — title + note..."
if [ "${HOST}" = "github.com" ]; then
echo ">>> Обновление релиза (ID: ${RELEASE_ID}) — name + body..."
PATCH_PAYLOAD="{\"name\":\"${RELEASE_TITLE}\",\"body\":${BODY_JSON}}"
if [ "${HOST}" = "github.com" ]; then
PATCH_URL="https://api.github.com/repos/${REPO}/releases/${RELEASE_ID}"
else
PATCH_PAYLOAD="{\"title\":\"${RELEASE_TITLE}\",\"note\":${BODY_JSON}}"
PATCH_URL="${SERVER}/api/v1/repos/${REPO}/releases/${RELEASE_ID}"
fi
PATCH_RESP=$(curl -sS -X PATCH \
@@ -379,7 +378,8 @@ jobs:
"${EXTRA_HEADERS[@]}" \
"${PATCH_URL}" \
-d "${PATCH_PAYLOAD}")
echo ">>> Релиз обновлён"
PATCH_NAME=$(printf '%s' "${PATCH_RESP}" | python3 -c "import sys,json; print(json.load(sys.stdin).get('name',''))" 2>/dev/null || echo '')
echo ">>> Релиз обновлён (name: ${PATCH_NAME})"
if [ "${HOST}" = "github.com" ]; then
UPLOAD_BASE=$(printf '%s' "${RELEASE_JSON}" | python3 -c "import sys,json; print(json.load(sys.stdin).get('upload_url','').split('{')[0])")