diff --git a/resources/com/cadoles/gitea/gitea-release.sh b/resources/com/cadoles/gitea/gitea-release.sh index 3ebb13e..8e753dd 100644 --- a/resources/com/cadoles/gitea/gitea-release.sh +++ b/resources/com/cadoles/gitea/gitea-release.sh @@ -14,7 +14,10 @@ GITEA_RELEASE_IS_DRAFT=${GITEA_RELEASE_IS_DRAFT:-false} GITEA_RELEASE_IS_PRERELEASE=${GITEA_RELEASE_IS_PRERELEASE:-true} GITEA_RELEASE_BODY=${GITEA_RELEASE_BODY} GITEA_RELEASE_ATTACHMENTS=${GITEA_RELEASE_ATTACHMENTS} -GITEA_UPLOAD_MAX_RETRY=${GITEA_UPLOAD_MAX_RETRY:-3} +GITEA_RELEASE_CURL_MAX_RETRY=${GITEA_RELEASE_CURL_MAX_RETRY:-3} + +GITEA_RELEASE_CLEANUP_PRERELEASES=${GITEA_RELEASE_CLEANUP_PRERELEASES:-true} +GITEA_RELEASE_CLEANUP_KEPT_PRERELEASES=${GITEA_RELEASE_CLEANUP_KEPT_PRERELEASES:-3} function check_dependencies { assert_command_available 'curl' @@ -159,12 +162,30 @@ function gitea_api { --fail \ --ipv4 \ --progress-bar \ - --retry "$GITEA_UPLOAD_MAX_RETRY" \ + --retry "$GITEA_RELEASE_CURL_MAX_RETRY" \ -u "$GITEA_RELEASE_USERNAME:$GITEA_RELEASE_PASSWORD" \ + $GITEA_RELEASE_CURL_ARGS \ ${args} \ "$GITEA_RELEASE_BASE_URL/api/v1$path" } +function clean_prereleases { + if [ "$GITEA_RELEASE_CLEANUP_PRERELEASES" != "true" ]; then + return + fi + + local releases=$(gitea_api "/repos/$GITEA_RELEASE_ORG/$GITEA_RELEASE_PROJECT/releases") + local to_delete=$(echo "$releases" | jq -r --arg index "$GITEA_RELEASE_CLEANUP_KEPT_PRERELEASES" '[.[] | select(.prerelease == true)] | sort_by(.created_at) | reverse | .[$index | tonumber:] | .[].id') + + echo $to_delete + + for release_id in $to_delete; do + gitea_api "/repos/$GITEA_RELEASE_ORG/$GITEA_RELEASE_PROJECT/releases/$release_id" \ + -X DELETE \ + -H "Content-Type:application/json" + done +} + function main { check_dependencies source_env_file @@ -173,7 +194,9 @@ function main { retrieve_commitish_target retrieve_version local release=$(create_release) + sleep 1 # Wait for release creation upload_release_attachments "$release" + clean_prereleases } main \ No newline at end of file