9
0
Fork 0
mirror of https://code.forgejo.org/actions/forgejo-release synced 2026-02-18 12:37:02 +00:00

feat: use curl to create release and upload assets

This commit is contained in:
Michael Kriese 2026-02-17 16:45:59 +01:00
parent 6c747b97f9
commit d78b6aea24
No known key found for this signature in database
GPG key ID: F8D7748549A5986A

View file

@ -91,22 +91,32 @@ upload_release() {
done done
fi fi
if $PRERELEASE || echo "${TAG}" | grep -qi '\-rc'; then if $PRERELEASE || echo "${TAG}" | grep -qi '\-rc'; then
releaseType="--prerelease" prerelease="true"
echo "Uploading as Pre-Release" echo "Uploading as Pre-Release"
else else
prerelease="false"
echo "Uploading as Stable" echo "Uploading as Stable"
fi fi
ensure_tag ensure_tag
if ! $TEA_BIN release create "${assets[@]}" --repo $REPO --note "$RELEASENOTES" --tag "$TAG" --title "$TITLE" --draft ${releaseType} >&"$TMP_DIR"/tea.log; then jq --arg title "$TITLE" --arg body "$RELEASENOTES" --arg tag "$TAG" --arg pre $prerelease '{"draft": true, "name": $title, "body": $body, "prerelease": $pre }' >"$TMP_DIR"/release-payload.json
if grep --quiet 'Unknown API Error: 500' "$TMP_DIR"/tea.log && grep --quiet services/release/release.go:194 "$TMP_DIR"/tea.log; then api POST repos/$REPO/releases -d @"$TMP_DIR"/release-payload.json >"$TMP_DIR"/release.json
echo "workaround v1.20 race condition https://codeberg.org/forgejo/forgejo/issues/1370" if [ "$SKIP_ASSETS" == 'false' ]; then
sleep 10 local id=$(jq --raw-output .id <"$TMP_DIR"/release.json)
$TEA_BIN release create "${assets[@]}" --repo $REPO --note "$RELEASENOTES" --tag "$TAG" --title "$TITLE" --draft ${releaseType} for file in "$RELEASE_DIR"/*; do
else local name=$(basename $file)
cat "$TMP_DIR"/tea.log api_bin repos/$REPO/releases/$id/assets/$name -D @$file
return 1 done
fi
fi fi
# if ! $TEA_BIN release create "${assets[@]}" --repo $REPO --note "$RELEASENOTES" --tag "$TAG" --title "$TITLE" --draft ${releaseType} >&"$TMP_DIR"/tea.log; then
# if grep --quiet 'Unknown API Error: 500' "$TMP_DIR"/tea.log && grep --quiet services/release/release.go:194 "$TMP_DIR"/tea.log; then
# echo "workaround v1.20 race condition https://codeberg.org/forgejo/forgejo/issues/1370"
# sleep 10
# $TEA_BIN release create "${assets[@]}" --repo $REPO --note "$RELEASENOTES" --tag "$TAG" --title "$TITLE" --draft ${releaseType}
# else
# cat "$TMP_DIR"/tea.log
# return 1
# fi
# fi
maybe_use_release_note_assistant maybe_use_release_note_assistant
release_draft false release_draft false
} }
@ -160,9 +170,6 @@ maybe_override() {
upload() { upload() {
setup_api setup_api
setup_tea
rm -f ~/.config/tea/config.yml
GITEA_SERVER_TOKEN=$TOKEN $TEA_BIN login add --url $FORGEJO
maybe_sign_release maybe_sign_release
maybe_override maybe_override
upload_release upload_release
@ -181,7 +188,16 @@ api() {
path=$1 path=$1
shift shift
curl --fail -X "$method" -sS -H "Content-Type: application/json" -H "Authorization: token $TOKEN" "$@" $FORGEJO/api/v1/"$path" curl --retry 5 --fail -X "$method" -sS -H "Content-Type: application/json" -H "Authorization: token $TOKEN" "$@" $FORGEJO/api/v1/"$path"
}
api_bin() {
method=$1
shift
path=$1
shift
curl --retry 5 --fail -X "$method" -sS -H "Authorization: token $TOKEN" "$@" $FORGEJO/api/v1/"$path"
} }
wait_release() { wait_release() {