fix: make release PR creation robust against race conditions #19
@@ -189,27 +189,51 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Creating new PR..."
|
echo "Creating new PR..."
|
||||||
echo "Waiting for branch to be ready..."
|
echo "Waiting for next-release branch to be ready..."
|
||||||
sleep 3
|
for i in $(seq 1 10); do
|
||||||
|
BRANCH_STATUS=$(curl -s --retry 3 --retry-delay 2 --retry-connrefused \
|
||||||
RESPONSE=$(curl -s --retry 3 --retry-delay 3 --retry-all-errors --retry-connrefused \
|
-w "%{http_code}" -o /dev/null \
|
||||||
-w "\n%{http_code}" -X POST \
|
|
||||||
-H "Authorization: token ${TOKEN}" \
|
-H "Authorization: token ${TOKEN}" \
|
||||||
-H "Content-Type: application/json" \
|
"${API_URL}/branches/next-release")
|
||||||
--data "$(jq -n \
|
if [ "${BRANCH_STATUS}" = "200" ]; then
|
||||||
|
echo "Branch ready after ${i} attempt(s)"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [ "${i}" = "10" ]; then
|
||||||
|
echo "Branch next-release not found after 10 attempts, giving up"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Branch not ready yet (attempt ${i}/10), waiting..."
|
||||||
|
sleep 3
|
||||||
|
done
|
||||||
|
|
||||||
|
PR_DATA=$(jq -n \
|
||||||
--arg title "${TITLE}" \
|
--arg title "${TITLE}" \
|
||||||
--arg body "${DESCRIPTION}" \
|
--arg body "${DESCRIPTION}" \
|
||||||
--arg head "next-release" \
|
--arg head "next-release" \
|
||||||
--arg base "${DEFAULT_BRANCH}" \
|
--arg base "${BASE_BRANCH}" \
|
||||||
'{title: $title, body: $body, head: $head, base: $base}')" \
|
'{title: $title, body: $body, head: $head, base: $base}')
|
||||||
|
|
||||||
|
for i in $(seq 1 5); do
|
||||||
|
RESPONSE=$(curl -s --retry 3 --retry-delay 2 --retry-connrefused \
|
||||||
|
-w "\n%{http_code}" -X POST \
|
||||||
|
-H "Authorization: token ${TOKEN}" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
--data "${PR_DATA}" \
|
||||||
"${API_URL}/pulls")
|
"${API_URL}/pulls")
|
||||||
HTTP_CODE=$(echo "${RESPONSE}" | tail -1)
|
HTTP_CODE=$(echo "${RESPONSE}" | tail -1)
|
||||||
BODY=$(echo "${RESPONSE}" | sed '$d')
|
BODY=$(echo "${RESPONSE}" | sed '$d')
|
||||||
if [ "${HTTP_CODE}" -ge 400 ]; then
|
if [ "${HTTP_CODE}" -lt 400 ]; then
|
||||||
echo "Error creating PR (HTTP ${HTTP_CODE}): ${BODY}"
|
echo "PR created successfully"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [ "${i}" = "5" ]; then
|
||||||
|
echo "Error creating PR after 5 attempts (HTTP ${HTTP_CODE}): ${BODY}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "PR created successfully"
|
echo "PR creation attempt ${i}/5 failed (HTTP ${HTTP_CODE}), retrying..."
|
||||||
|
sleep 3
|
||||||
|
done
|
||||||
|
|
||||||
create-release:
|
create-release:
|
||||||
name: Create Release
|
name: Create Release
|
||||||
|
|||||||
Reference in New Issue
Block a user