feat(gitea,release): auto cleanup prereleases
This commit is contained in:
parent
3f1b8bcda1
commit
199b0bf5d1
|
@ -14,7 +14,10 @@ GITEA_RELEASE_IS_DRAFT=${GITEA_RELEASE_IS_DRAFT:-false}
|
||||||
GITEA_RELEASE_IS_PRERELEASE=${GITEA_RELEASE_IS_PRERELEASE:-true}
|
GITEA_RELEASE_IS_PRERELEASE=${GITEA_RELEASE_IS_PRERELEASE:-true}
|
||||||
GITEA_RELEASE_BODY=${GITEA_RELEASE_BODY}
|
GITEA_RELEASE_BODY=${GITEA_RELEASE_BODY}
|
||||||
GITEA_RELEASE_ATTACHMENTS=${GITEA_RELEASE_ATTACHMENTS}
|
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 {
|
function check_dependencies {
|
||||||
assert_command_available 'curl'
|
assert_command_available 'curl'
|
||||||
|
@ -159,12 +162,30 @@ function gitea_api {
|
||||||
--fail \
|
--fail \
|
||||||
--ipv4 \
|
--ipv4 \
|
||||||
--progress-bar \
|
--progress-bar \
|
||||||
--retry "$GITEA_UPLOAD_MAX_RETRY" \
|
--retry "$GITEA_RELEASE_CURL_MAX_RETRY" \
|
||||||
-u "$GITEA_RELEASE_USERNAME:$GITEA_RELEASE_PASSWORD" \
|
-u "$GITEA_RELEASE_USERNAME:$GITEA_RELEASE_PASSWORD" \
|
||||||
|
$GITEA_RELEASE_CURL_ARGS \
|
||||||
${args} \
|
${args} \
|
||||||
"$GITEA_RELEASE_BASE_URL/api/v1$path"
|
"$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 {
|
function main {
|
||||||
check_dependencies
|
check_dependencies
|
||||||
source_env_file
|
source_env_file
|
||||||
|
@ -173,7 +194,9 @@ function main {
|
||||||
retrieve_commitish_target
|
retrieve_commitish_target
|
||||||
retrieve_version
|
retrieve_version
|
||||||
local release=$(create_release)
|
local release=$(create_release)
|
||||||
|
sleep 1 # Wait for release creation
|
||||||
upload_release_attachments "$release"
|
upload_release_attachments "$release"
|
||||||
|
clean_prereleases
|
||||||
}
|
}
|
||||||
|
|
||||||
main
|
main
|
Loading…
Reference in New Issue