diff --git a/README.md b/README.md index d6645ee..2a18930 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ Upload or download the assets of a release to a Forgejo instance. | gpg-passphrase | Passphrase of the GPG Private Key | `false` | | | download-retry | Number of times to retry if the release is not ready (default 1) | `false` | | | 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 | diff --git a/action.yml b/action.yml index cd5fe69..1f2cf83 100644 --- a/action.yml +++ b/action.yml @@ -32,6 +32,9 @@ inputs: verbose: description: 'Increase the verbosity level' default: 'false' + override: + description: 'Override an existing release by the same {tag}' + default: 'false' prerelease: description: 'Mark Release as Pre-Release' default: 'false' @@ -76,6 +79,8 @@ runs: export SHA="${{ github.sha }}" fi + export OVERRIDE="${{ inputs.override }}" + export VERBOSE="${{ inputs.verbose }}" export RETRY="${{ inputs.download-retry }}" diff --git a/forgejo-release.sh b/forgejo-release.sh index 4515d02..762270f 100755 --- a/forgejo-release.sh +++ b/forgejo-release.sh @@ -12,6 +12,7 @@ if ${VERBOSE:-false}; then set -x; fi : ${GNUPGHOME:=$TMP_DIR} : ${BIN_DIR:=$TMP_DIR} : ${TEA_VERSION:=0.9.0} +: ${OVERRIDE:=false} : ${RETRY:=1} : ${DELAY:=10} @@ -84,12 +85,21 @@ maybe_sign_release() { fi } +maybe_override() { + if test "$OVERRIDE" = "false"; then + return + fi + api DELETE repos/$REPO/releases/tags/$TAG >& /dev/null || true + api DELETE repos/$REPO/tags/$TAG >& /dev/null || true +} + upload() { setup_api setup_tea rm -f ~/.config/tea/config.yml GITEA_SERVER_TOKEN=$TOKEN $BIN_DIR/tea login add --url $FORGEJO maybe_sign_release + maybe_override upload_release } diff --git a/testdata/upload-download/.forgejo/workflows/test.yml b/testdata/upload-download/.forgejo/workflows/test.yml index 3eba640..f78ec12 100644 --- a/testdata/upload-download/.forgejo/workflows/test.yml +++ b/testdata/upload-download/.forgejo/workflows/test.yml @@ -17,6 +17,17 @@ jobs: release-dir: upload-dir release-notes: "RELEASE NOTES" verbose: true + - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} + id: release-upload + uses: SELF@vTest + with: + direction: upload + tag: v1.0 + token: FORGEJO_TOKEN + release-dir: upload-dir + release-notes: "RELEASE NOTES" + override: "true" + verbose: true - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} id: release-download uses: SELF@vTest