fix(release): Gitea 1.22 API использует name/body вместо title/note
Релиз: архив исходников / Упаковка и публикация релиза (push) Successful in 4s
Релиз: архив исходников / Упаковка и публикация релиза (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:
@@ -323,7 +323,7 @@ jobs:
|
|||||||
if [ "${HOST}" = "github.com" ]; then
|
if [ "${HOST}" = "github.com" ]; then
|
||||||
RELEASE_PAYLOAD="{\"tag_name\":\"${TAG}\",\"target_commitish\":\"${TARGET_COMMITISH}\",\"name\":\"${RELEASE_TITLE}\",\"body\":${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}"
|
||||||
else
|
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
|
fi
|
||||||
|
|
||||||
echo ">>> Создание релиза для тега ${TAG}..."
|
echo ">>> Создание релиза для тега ${TAG}..."
|
||||||
@@ -363,14 +363,13 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
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)
|
# (handles race condition when parallel run creates empty release)
|
||||||
echo ">>> Обновление релиза (ID: ${RELEASE_ID}) — title + note..."
|
echo ">>> Обновление релиза (ID: ${RELEASE_ID}) — name + body..."
|
||||||
|
PATCH_PAYLOAD="{\"name\":\"${RELEASE_TITLE}\",\"body\":${BODY_JSON}}"
|
||||||
if [ "${HOST}" = "github.com" ]; then
|
if [ "${HOST}" = "github.com" ]; then
|
||||||
PATCH_PAYLOAD="{\"name\":\"${RELEASE_TITLE}\",\"body\":${BODY_JSON}}"
|
|
||||||
PATCH_URL="https://api.github.com/repos/${REPO}/releases/${RELEASE_ID}"
|
PATCH_URL="https://api.github.com/repos/${REPO}/releases/${RELEASE_ID}"
|
||||||
else
|
else
|
||||||
PATCH_PAYLOAD="{\"title\":\"${RELEASE_TITLE}\",\"note\":${BODY_JSON}}"
|
|
||||||
PATCH_URL="${SERVER}/api/v1/repos/${REPO}/releases/${RELEASE_ID}"
|
PATCH_URL="${SERVER}/api/v1/repos/${REPO}/releases/${RELEASE_ID}"
|
||||||
fi
|
fi
|
||||||
PATCH_RESP=$(curl -sS -X PATCH \
|
PATCH_RESP=$(curl -sS -X PATCH \
|
||||||
@@ -379,7 +378,8 @@ jobs:
|
|||||||
"${EXTRA_HEADERS[@]}" \
|
"${EXTRA_HEADERS[@]}" \
|
||||||
"${PATCH_URL}" \
|
"${PATCH_URL}" \
|
||||||
-d "${PATCH_PAYLOAD}")
|
-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
|
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])")
|
UPLOAD_BASE=$(printf '%s' "${RELEASE_JSON}" | python3 -c "import sys,json; print(json.load(sys.stdin).get('upload_url','').split('{')[0])")
|
||||||
|
|||||||
Reference in New Issue
Block a user