diff --git a/README.md b/README.md index e879520..eb2cd79 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Upload or download the assets of a release to a Forgejo instance. | `verbose` |

Increase the verbosity level

| `false` | `false` | | `override` |

Override an existing release by the same {tag}

| `false` | `false` | | `prerelease` |

Mark Release as Pre-Release

| `false` | `false` | +| `release-notes-assistant` |

Generate release notes with Release Notes Assistant

| `false` | `false` | ## Examples diff --git a/action.yml b/action.yml index db93c7c..f903b1c 100644 --- a/action.yml +++ b/action.yml @@ -43,6 +43,9 @@ inputs: prerelease: description: 'Mark Release as Pre-Release' default: 'false' + release-notes-assistant: + description: 'Generate release notes with Release Notes Assistant' + default: 'false' runs: using: "composite" @@ -57,6 +60,8 @@ runs: # A trailing / will mean http://forgejo//api/v1 is used # and it always 401 as of v1.19, because of the double slash FORGEJO=${FORGEJO%%/} + export SCHEME=${FORGEJO%://*} + export HOST=${FORGEJO#*://} export REPO="${{ inputs.repo }}" if test -z "$REPO"; then @@ -77,6 +82,8 @@ runs: export PRERELEASE="${{ inputs.prerelease }}" + export RELEASE_NOTES_ASSISTANT="${{ inputs.release-notes-assistant }}" + export TOKEN="${{ inputs.token }}" export RELEASE_DIR="${{ inputs.release-dir }}" diff --git a/forgejo-release.sh b/forgejo-release.sh index 70c57cf..13c9493 100755 --- a/forgejo-release.sh +++ b/forgejo-release.sh @@ -52,15 +52,16 @@ upload_release() { ensure_tag anchor=$(echo $TAG | sed -e 's/^v//' -e 's/[^a-zA-Z0-9]/-/g') if ! $BIN_DIR/tea 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 - $BIN_DIR/tea release create $assets --repo $REPO --note "$RELEASENOTES" --tag $TAG --title "$TITLE" --draft ${releasetype} - else - cat $TMP_DIR/tea.log - return 1 - fi + 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 + $BIN_DIR/tea 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 release_draft false } @@ -71,6 +72,14 @@ release_draft() { api PATCH repos/$REPO/releases/$id --data-raw '{"draft": '$state'}' } +maybe_use_release_note_assistant() { + if "$RELEASE_NOTES_ASSISTANT"; then + curl --fail -s -S -o rna https://code.forgejo.org/forgejo/release-notes-assistant/releases/download/v1.2.3/release-notes-assistant + chmod +x ./rna + ./rna --storage release --storage-location $TAG --forgejo-url $SCHEME://placeholder:$TOKEN@$HOST --repository $REPO --token $TOKEN release $TAG + fi +} + sign_release() { local passphrase if test -s "$GPG_PASSPHRASE"; then