fix(release): fetch file SHAs from base branch, not next-release #24
@@ -175,14 +175,29 @@ jobs:
|
||||
sleep 2
|
||||
done
|
||||
|
||||
# Fetch file blob SHAs from next-release (inherited from base on creation)
|
||||
# Fetch file blob SHA from BASE_BRANCH. next-release was just forked
|
||||
# from base so the blob SHA matches; querying base avoids racing
|
||||
# Gitea's per-endpoint propagation for the new branch (the /contents
|
||||
# endpoint can still 500/404 after /branches reports 200). Returns
|
||||
# empty only when the file genuinely does not exist on base.
|
||||
fetch_sha() {
|
||||
local path="$1" out meta code body
|
||||
out=$(api_call GET "/contents/${path}?ref=next-release")
|
||||
meta=$(meta_line "${out}"); code="${meta%%|*}"; body=$(body_lines "${out}")
|
||||
if [ "${code}" = "200" ]; then
|
||||
printf '%s' "${body}" | jq -r '.sha // empty'
|
||||
fi
|
||||
for i in $(seq 1 5); do
|
||||
out=$(api_call GET "/contents/${path}?ref=${BASE_BRANCH}")
|
||||
meta=$(meta_line "${out}"); code="${meta%%|*}"; body=$(body_lines "${out}")
|
||||
if [ "${code}" = "200" ]; then
|
||||
printf '%s' "${body}" | jq -r '.sha // empty'
|
||||
return 0
|
||||
fi
|
||||
if [ "${code}" = "404" ]; then
|
||||
return 0
|
||||
fi
|
||||
if [ "${i}" = "5" ]; then
|
||||
echo "fetch_sha ${path} failed after 5 attempts (${meta}): ${body}" >&2
|
||||
return 0
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
}
|
||||
CHANGELOG_SHA=$(fetch_sha "CHANGELOG.md")
|
||||
VERSION_SHA=$(fetch_sha ".version")
|
||||
|
||||
Reference in New Issue
Block a user