diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8abf1d3..285eeae 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -56,6 +56,21 @@ jobs: # Získání aktuálního tagu CURRENT_TAG=$(git describe --tags --abbrev=0 HEAD) + # Funkce pro získání předchozího stabilního tagu + get_previous_stable_tag() { + PREV_TAG="" + # Procházej všechny tagy v obráceném pořadí (od nejnovějšího) + for tag in $(git tag --sort=-creatordate); do + # Pokud je tag stabilní (např. v1.0.0, v1.2.3, atd.), ale není stejný jako aktuální + if [[ "$tag" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] && [[ "$tag" != "$CURRENT_TAG" ]]; then + PREV_TAG=$tag + break + fi + done + echo $PREV_TAG + } + + # Pokud je aktuální tag beta nebo rc, najdi poslední stabilní verzi if [[ "$CURRENT_TAG" =~ -beta || "$CURRENT_TAG" =~ -rc ]]; then # Najdi poslední stabilní verzi (ignoruj beta/rc tagy) @@ -67,7 +82,7 @@ jobs: if [[ "$CURRENT_TAG" == "$PREV_TAG" ]]; then echo "Current tag is the same as the previous tag, using the previous stable tag." - PREV_TAG=$(git tag --sort=-creatordate | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | grep -B 1 "$CURRENT_TAG" | tail -n 1) + PREV_TAG=$(get_previous_stable_tag) fi if [ -z "$PREV_TAG" ]; then