From 3c014a480c0a14b5ba31cc5ee4671346c5634635 Mon Sep 17 00:00:00 2001 From: "markus.block" Date: Sun, 22 Feb 2026 18:59:34 +0100 Subject: [PATCH] release-process (#5) Reviewed-on: https://gitea.netzwissen.de/lxcafe/lxcafe/pulls/5 --- README.md | 33 +- VERSION | 1 + ...achinstallationsarbeiten_Konsole_v2.txt.sh | 380 ------------------ ...nstallationsarbeiten_LC_Esslingen_XFCE.sh} | 15 +- post_installation_script/README.md | 4 +- release.sh | 85 ++++ 6 files changed, 125 insertions(+), 393 deletions(-) create mode 100644 VERSION delete mode 100644 post_installation_script/231013_nachinstallationsarbeiten_Konsole_v2.txt.sh rename post_installation_script/{20251212_Nachinstallationsarbeiten_LC_Esslingen_XFCE_v8.sh => Nachinstallationsarbeiten_LC_Esslingen_XFCE.sh} (96%) create mode 100755 release.sh diff --git a/README.md b/README.md index fe15e30..04d62a2 100644 --- a/README.md +++ b/README.md @@ -16,4 +16,35 @@ software to create a virtual machine with Linux Mint XFCE. Then, copy the script This allows you to test the script without affecting your main system. You can also make use of snapshot feature of the virtualization software to easily revert to a clean state after testing, e.g. state directly after Linux Mint installation, before running the post-installation script. -This way you can test the script multiple times without needing to reinstall Linux Mint each time. \ No newline at end of file +This way you can test the script multiple times without needing to reinstall Linux Mint each time. + +## Release Process + +This project uses a simple release process based on git tags. + +### Versioning +- Version is stored in `VERSION` file (format: v0, v1, v2, ...) +- Major version increments only (major-bugfix scheme) +- Script version is also stored in `SCRIPT_VERSION` variable within the main script to display version during script execution + +### Creating a Release +Run the release script from the repository root: +```bash +./release.sh +``` + +The script will: +1. Check for uncommitted local changes (exits if any exist) +2. Show current version and propose next version +3. Prompt for confirmation +4. Update VERSION file and SCRIPT_VERSION in the script +5. Create a git commit +6. Create an annotated tag +7. Prompt to push to origin (including tags) + +### Gitea Integration +When a tag is pushed to the remote, Gitea automatically creates a release from it. + +### Requirements +- Clean working tree (no uncommitted changes) +- Git remote configured (origin) \ No newline at end of file diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..a00f43e --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +v8 diff --git a/post_installation_script/231013_nachinstallationsarbeiten_Konsole_v2.txt.sh b/post_installation_script/231013_nachinstallationsarbeiten_Konsole_v2.txt.sh deleted file mode 100644 index 5c7707d..0000000 --- a/post_installation_script/231013_nachinstallationsarbeiten_Konsole_v2.txt.sh +++ /dev/null @@ -1,380 +0,0 @@ -#!/bin/bash - - -cMode="KeineSimulation" -cMode="simulation" -bIsVlcInstalled=false - - -echo " -################################### -#### Nachinstallationsarbeiten #### -################################### -" -# -# -# -if [ "$cMode" != "KeineSimulation" ]; then - echo " simulation sudo apt-get update" -else - sudo apt-get update -fi - -sSuffixDate=$(date '+%Y-%m-%d_%H:%M:%S') - - -echo -echo -echo "A) #### 64 bit Mint XFCE ####" -echo "B) #### 32 bit Debian XFCE ####" -echo "q) Quit. Abbruch" -echo "sonst zum überspringen." -read -p " -Geben Sie a oder b ein und die Eingabetaste, -Abbruch mit jeder anderen Taste ... " option; -case "$option" in - [aAmM]) - echo "A) #### 64 bit Mint XFCE ####" - if [ "$cMode" != "KeineSimulation" ]; then - echo "simulation - sudo apt -y install xfce4-goodies clementine vlc htop hardinfo font-manager asunder gtkhash pcmanfm - "; - bIsVlcInstalled=true - else - sudo apt -y install xfce4-goodies clementine vlc htop hardinfo font-manager asunder gtkhash pcmanfm - bIsVlcInstalled=true - fi - ;; - [bBdD]) - echo "#### 32 bit Debian XFCE ####" - echo "## sources list" - if [ "$cMode" != "KeineSimulation" ]; then - echo "### Paketquellen eintragen:" - echo " cp /etc/apt/sources.list /etc/apt/sources.list_" $sSuffixDate - echo "simulation deb http://deb.debian.org/debian bookworm main contrib non-free > /etc/apt/sources.list" - echo "simulation deb-src http://deb.debian.org/debian bookworm main contrib non-free >> /etc/apt/sources.list" - echo "simulation deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free >> /etc/apt/sources.list" - echo "simulation deb-src http://deb.debian.org/debian-security/ bookworm-security main contrib non-free >> /etc/apt/sources.list" - echo "simulation deb http://deb.debian.org/debian bookworm-updates main contrib non-free >> /etc/apt/sources.list" - echo "simulation deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free >> /etc/apt/sources.list" - echo "### zusätzliche Standardprogramme installieren:" - echo "simulation sudo apt install xfce4-goodies clementine vlc htop hardinfo font-manager asunder gtkhash pcmanfm timeshift gnome-system-tools gnome-disk-utility inxi " - bIsVlcInstalled=true - echo " FIN #### 64 bit Mint XFCE ####" - else - echo "### Paketquellen eintragen:" - cp /etc/apt/sources.list /etc/apt/sources.list_$sSuffixDate - deb http://deb.debian.org/debian bookworm main contrib non-free > /etc/apt/sources.list - deb-src http://deb.debian.org/debian bookworm main contrib non-free >> /etc/apt/sources.list - deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free >> /etc/apt/sources.list - deb-src http://deb.debian.org/debian-security/ bookworm-security main contrib non-free >> /etc/apt/sources.list - deb http://deb.debian.org/debian bookworm-updates main contrib non-free >> /etc/apt/sources.list - deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free >> /etc/apt/sources.list - echo "### zusätzliche Standardprogramme installieren:" - sudo apt install xfce4-goodies clementine vlc htop hardinfo font-manager asunder gtkhash pcmanfm timeshift gnome-system-tools gnome-disk-utility inxi - bIsVlcInstalled=true - echo " FIN #### 32 bit Debian XFCE ####" - fi - ;; - q) echo "Quit. Abbruch" - exit - ;; - *) echo "Unknown parameter" -esac - -echo "" -echo "" -echo "#### alle Systeme ####" -# -echo "### Taskleiste mit XFCE-Applets für Systemauslastung und 2x Netzwerkmonitor (LAN + WLAN) ergänzen und konfigurieren" -echo " leider fehlt die automatisierung noch " -echo " Manuelle Arbeit notwendig " -# -# -# -# -echo -echo -echo "#### nur auf Wunsch / bei Bedarf ####" -# -echo -echo -echo -### Sensoren ### -# alle Abfragen können mit "ja" beantwortet werden! -read -p " ### Sensoren ### -Geben Sie j oder n ein und die Eingabetaste, -Abbruch mit jeder anderen Taste ... " kommando; -if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then - echo "### Sensoren ###" - if [ "$cMode" != "KeineSimulation" ]; then - echo " simulation " - echo " apt -y Automatic yes to prompts; assume "yes" as answer to all prompts and run non-interactively." - echo "simulation sudo apt -y install lm-sensors psensor" - echo "simulation sudo sensors-detect" - echo "# alle Abfragen können mit "ja" beantwortet werden!" - echo "simulation sudo service kmod start" - else - sudo apt install lm-sensors psensor - sudo sensors-detect - echo "# alle Abfragen können mit "ja" beantwortet werden!" - sudo service kmod start - echo "## dann psensor konfigurieren im Applet in der Taskleiste" - fi -fi - - -echo -echo -if $bIsVlcInstalled; then - echo "### Kauf-DVDs abspielen ###" - read -p " ### Film DVDs ### - Geben Sie j oder n ein und die Eingabetaste, - Abbruch mit jeder anderen Taste ... " kommando; - if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then - echo "### Sensoren ###" - if [ "$cMode" != "KeineSimulation" ]; then - echo " simulation " - echo "simulation sudo service kmod start" - echo " simulation sudo apt install libdvd-pkg" - echo " simulationsudo dpkg-reconfigure libdvd-pkg" - else - sudo apt install libdvd-pkg - sudo dpkg-reconfigure libdvd-pkg - fi - fi -else - echo "Player Fehlt - ## vlc muss installiert sein! Zum Kauf-DVDs abspielen" -fi - - -echo -echo -echo "### Schriften, falls Microsoft-Office-Dokumente weiterverwendet werden sollen oder Dokumentenaustausch mit Microsoft-Nutzern gewünscht ist ### -## frei verfügbare, alte Microsoft-Standardschriften installieren:" - -read -p " ### M$ Schriften ### -Geben Sie j oder n ein und die Eingabetaste, -Abbruch mit jeder anderen Taste ... " kommando; -if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then - echo "### M$ Schriften ###" - if [ "$cMode" != "KeineSimulation" ]; then - echo "simulation - sudo apt install ttf-mscorefonts-installer" - else - sudo apt install ttf-mscorefonts-installer - fi -fi - -echo -echo -echo " ## freie Google-Schriften mit gleicher Laufweite wie aktuelle MS-Standardschriften installieren:" -read -p " ### Google Schriften ### -Geben Sie j oder n ein und die Eingabetaste, -Abbruch mit jeder anderen Taste ... " kommando; -if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then - echo - echo "### Google Schriften ###" - if [ "$cMode" != "KeineSimulation" ]; then - - _gf="google-fonts" - fGoogleSchriften=./$_gf".tar.gz" - if [ ! -f "$fGoogleSchriften" ]; then - echo - echo "$fGoogleSchriften nicht gefunden." - echo " soll das Archiv "google-fonts.tar.gz" von Github runter geladen werden ca. 1GB gross! " - read -p " ### Download Google Schriften ### j/n: " runterLaden; - if [ $runterLaden == 'j' -o $runterLaden == 'J' -o $runterLaden == 'ja' -o $runterLaden == 'y' -o $runterLaden == 'Y' ]; then - echo " Download Google Schriften ###" - echo "simulation - _wgeturl=https://github.com/google/fonts/archive/main.tar.gz - _gf=google-fonts - o Connecting to Github server to download fonts... - wget $_wgeturl -O $_gf.tar.gz" - fi - fi - - if [ -f "$fGoogleSchriften" ]; then - echo - echo "Extracting the downloaded archive..." - echo " simulationtar -zxvf $_gf.tar.gz" - echo "Creating the /usr/share/fonts/truetype/$_gf folder" - echo " simulationsudo mkdir -p /usr/share/fonts/truetype/$_gf" - echo "Installing all .ttf fonts in /usr/share/fonts/truetype/$_gf" - echo " simulationfind $PWD/fonts-main/ -name "*.ttf" -exec sudo install -m644 {} /usr/share/fonts/truetype/google-fonts/ \; " - echo "Updating the font cache" - echo " simulationfc-cache -f" - else - echo "Schriften Fehlen immer noch. Manuell runterladen und installieren" - fi - -# "Simulation" -else - # "KeineSimulation" - - _gf="google-fonts" - fGoogleSchriften=./$_gf".tar.gz" - if [ ! -f "$fGoogleSchriften" ]; then - echo "" - echo "$fGoogleSchriften nicht gefunden." - echo " soll das Archiv "google-fonts.tar.gz" von Github runter geladen werden ca. 1GB gross! " - read -p " ### Download Google Schriften ### " runterLaden; - if [ $runterLaden == 'j' -o $runterLaden == 'J' -o $runterLaden == 'ja' -o $runterLaden == 'y' -o $runterLaden == 'Y' ]; then - _wgeturl="https://github.com/google/fonts/archive/main.tar.gz" - echo "Connecting to Github server to download fonts..." - wget $_wgeturl -O $_gf.tar.gz - fi - fi - if [ -f "$fGoogleSchriften" ]; then - echo - echo "$fGoogleSchriften nicht gefunden." - echo "Extracting the downloaded archive..." - tar -zxvf $_gf.tar.gz - echo "Creating the /usr/share/fonts/truetype/$_gf folder" - sudo mkdir -p /usr/share/fonts/truetype/$_gf - echo "Installing all .ttf fonts in /usr/share/fonts/truetype/$_gf" - find $PWD/fonts-main/ -name "*.ttf" -exec sudo install -m644 {} /usr/share/fonts/truetype/google-fonts/ \; || echo "An error occured, please run this script again." - echo "Updating the font cache" - fc-cache -f - echo "Done. Now you can delete the tarball file $_gf.tar.gz if you wish." - else - echo "Schriften Fehlen immer noch. Manuell runterladen und installieren" - fi - -# "KeineSimulation" - fi -fi -# - - - - -echo -echo -echo "#### Chromium Browser installieren:" -read -p " ### Chromium ### -Geben Sie j oder n ein und die Eingabetaste, -Abbruch mit jeder anderen Taste ... " kommando; -if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then - echo "### Chromium ###" - if [ "$cMode" != "KeineSimulation" ]; then - echo "simulation - sudo apt install chromium - sudo apt install chromium-browser - " - echo " tbd DateiName!? - ## Gnome-Schlüsselbund-Fehlermeldung bei jedem Start von Chrome/Chromium beheben: Starter bzw. .desktop-Datei mit folgendem Parameter ergänzen: - ## --password-store=basic " - else - sudo apt install chromium-browser - fi88= - fi -fi - -echo -echo -echo "### Vivaldi Browser installieren:#### " -read -p " ### Vivaldi ### -Geben Sie j oder n ein und die Eingabetaste, -Abbruch mit jeder anderen Taste ... " kommando; -if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then - echo "### ###" - if [ "$cMode" != "KeineSimulation" ]; then - echo "simulation - ## nötige Zusatzpakete installieren - sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https curl -y - ## key importieren - curl -fsSL https://repo.vivaldi.com/archive/linux_signing_key.pub | gpg --dearmor | sudo tee /usr/share/keyrings/vivaldi.gpg > /dev/null - ## Repository hinzufügen - echo deb [arch=amd64,armhf signed-by=/usr/share/keyrings/vivaldi.gpg] https://repo.vivaldi.com/stable/deb/ stable main | sudo tee /etc/apt/sources.list.d/vivaldi.list - sudo apt update && sudo apt install vivaldi-stable" - echo " tbd DateiName!? - ## Gnome-Schlüsselbund-Fehlermeldung bei jedem Start von Chrome/Chromium beheben: Starter bzw. .desktop-Datei mit folgendem Parameter ergänzen: - ## --password-store=basic " - - - else - echo "## nötige Zusatzpakete installieren" - sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https curl -y - # - echo "## ## key importieren" - curl -fsSL https://repo.vivaldi.com/archive/linux_signing_key.pub | gpg --dearmor | sudo tee /usr/share/keyrings/vivaldi.gpg > /dev/null - # - echo "## ## Repository hinzufügen" - echo deb [arch=amd64,armhf signed-by=/usr/share/keyrings/vivaldi.gpg] https://repo.vivaldi.com/stable/deb/ stable main | sudo tee /etc/apt/sources.list.d/vivaldi.list - # - sudo apt update && sudo apt install vivaldi-stable - # - echo "## ## Gnome-Schlüsselbund-Fehlermeldung bei jedem Start von Chrome/Chromium beheben: Starter bzw. .desktop-Datei mit folgendem Parameter ergänzen: " - echo "## ## --password-store=basic" - # - fi -fi - - - -echo -echo -echo "####Signal für Desktop (setzt Signalinstallation auf einem Android- Oder Apple-Gerät voraus!)#### " -read -p " ### Signal ### -Geben Sie j oder n ein und die Eingabetaste, -Abbruch mit jeder anderen Taste ... " kommando; -if [ $kommando == 'j' -o $kommando == 'J' -o $kommando == 'ja' -o $kommando == 'y' -o $kommando == 'Y' ]; then - echo "### ###" - if [ "$cMode" != "KeineSimulation" ]; then - echo "simulation - ## zusätzliches Repository nötig! - # - ## NOTE: These instructions only work for 64-bit Debian-based - ## Linux distributions such as Ubuntu, Mint etc. - # - ## key importieren - wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg - cat signal-desktop-keyring.gpg | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null - ## Repository hinzufügen: - echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' | sudo tee /etc/apt/sources.list.d/signal-xenial.list - sudo apt update && sudo apt install signal-desktop - - " - else - echo "## zusätzliches Repository nötig! - ## NOTE: These instructions only work for 64-bit Debian-based - ## Linux distributions such as Ubuntu, Mint etc. - ## key importieren - " - wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg - cat signal-desktop-keyring.gpg | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null - # - echo "## Repository hinzufügen:" - echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' | sudo tee /etc/apt/sources.list.d/signal-xenial.list - sudo apt update && sudo apt install signal-desktop - # - - fi -fi - - - - - - - -echo -echo -echo "Skript ENDE" -echo -echo -echo -echo "Manuelle Schritte" -echo -echo "### Taskleiste mit XFCE-Applets für Systemauslastung und 2x Netzwerkmonitor (LAN + WLAN) ergänzen und konfigurieren" -echo -echo -echo "Wenn -### Sensoren ### -installiert wurden -## dann psensor konfigurieren im Applet in der Taskleiste " -echo -echo - diff --git a/post_installation_script/20251212_Nachinstallationsarbeiten_LC_Esslingen_XFCE_v8.sh b/post_installation_script/Nachinstallationsarbeiten_LC_Esslingen_XFCE.sh similarity index 96% rename from post_installation_script/20251212_Nachinstallationsarbeiten_LC_Esslingen_XFCE_v8.sh rename to post_installation_script/Nachinstallationsarbeiten_LC_Esslingen_XFCE.sh index e807060..47305b9 100644 --- a/post_installation_script/20251212_Nachinstallationsarbeiten_LC_Esslingen_XFCE_v8.sh +++ b/post_installation_script/Nachinstallationsarbeiten_LC_Esslingen_XFCE.sh @@ -1,12 +1,6 @@ #!/bin/bash - -# "Anderungs Historie -# Datum Version Name Änderung -# 2025-11-11 v6 MartinP mehr Erläuterungen reingeschrieben -# 2025-11-17 v7 Mark Simualtion Modus und 32Bit abfrage entfernt -# 2025-12-12 v8 MartinP Erläuterungen ergänzt und Typos entfernt -# +SCRIPT_VERSION="v8" bIsVlcInstalled=false @@ -26,9 +20,10 @@ question_answered_with_yes() { echo " -################################### -#### Nachinstallationsarbeiten #### -################################### +##################################### +#### Nachinstallationsarbeiten +#### Version: $SCRIPT_VERSION +##################################### #### Was tut dieses Skript? #### diff --git a/post_installation_script/README.md b/post_installation_script/README.md index 1860907..31e4340 100644 --- a/post_installation_script/README.md +++ b/post_installation_script/README.md @@ -5,7 +5,7 @@ This directory contains files belonging to the Linux Mint XFCE post-installation ## Prerequisites to run the script - Linux Mint XFCE installed and running - Internet connection for downloading packages and updates -- Script file: `20251212_Nachinstallationsarbeiten_LC_Esslingen_XFCE_v8.sh` copied to Desktop +- Script file: `Nachinstallationsarbeiten_LC_Esslingen_XFCE.sh` copied to Desktop - External files are referenced by the script, please check header comments in the script ## Usage @@ -14,7 +14,7 @@ Run the main script: ```bash cd post_installation_script -bash 20251212_Nachinstallationsarbeiten_LC_Esslingen_XFCE_v8.sh +bash Nachinstallationsarbeiten_LC_Esslingen_XFCE.sh ``` The script is interactive and will prompt for confirmation before each installation step. diff --git a/release.sh b/release.sh new file mode 100755 index 0000000..922612c --- /dev/null +++ b/release.sh @@ -0,0 +1,85 @@ +#!/usr/bin/env bash + +set -e + +if [ -n "$(git status --porcelain)" ]; then + echo "Error: You have uncommitted local changes." + echo "Please commit or stash them before releasing." + echo "" + echo "Uncommitted files:" + git status --short + exit 1 +fi + +VERSION_FILE="VERSION" +SCRIPT_FILE="post_installation_script/Nachinstallationsarbeiten_LC_Esslingen_XFCE.sh" + +if [ ! -f "$VERSION_FILE" ]; then + echo "Error: $VERSION_FILE not found" + exit 1 +fi + +CURRENT_VERSION=$(cat "$VERSION_FILE" | tr -d '\n') + +if [ ! -f "$SCRIPT_FILE" ]; then + echo "Error: $SCRIPT_FILE not found" + exit 1 +fi + +CURRENT_MAJOR=${CURRENT_VERSION#v} + +if ! [[ "$CURRENT_VERSION" =~ ^v[0-9]+$ ]]; then + echo "Error: Invalid version format in $VERSION_FILE. Expected v0, v1, v2, etc." + exit 1 +fi + +NEXT_VERSION=$((CURRENT_MAJOR + 1)) +NEXT_VERSION_STR="v$NEXT_VERSION" + +if git rev-parse "refs/tags/$NEXT_VERSION_STR" >/dev/null 2>&1; then + echo "Error: Tag $NEXT_VERSION_STR already exists locally." + exit 1 +fi + +if git remote get-url origin >/dev/null 2>&1; then + if git ls-remote --tags origin "$NEXT_VERSION_STR" 2>/dev/null | grep -q "$NEXT_VERSION_STR"; then + echo "Error: Tag $NEXT_VERSION_STR already exists on remote." + exit 1 + fi +else + echo "Warning: No remote configured. You can still create the release locally." +fi + +echo "Current version: $CURRENT_VERSION" +echo "Proposed version: $NEXT_VERSION_STR" +echo "" + +read -p "Confirm release version $NEXT_VERSION_STR? [y/N]: " confirm + +if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then + echo "Release aborted." + exit 0 +fi + +echo "$NEXT_VERSION_STR" > "$VERSION_FILE" + +sed -i.bak "s/^SCRIPT_VERSION=.*/SCRIPT_VERSION=\"$NEXT_VERSION_STR\"/" "$SCRIPT_FILE" +if [ -f "${SCRIPT_FILE}.bak" ]; then + rm "${SCRIPT_FILE}.bak" +fi + +git add "$VERSION_FILE" "$SCRIPT_FILE" +git commit -m "Release $NEXT_VERSION_STR" + +git tag -a "$NEXT_VERSION_STR" -m "Release $NEXT_VERSION_STR" + +echo "" +echo "Tag $NEXT_VERSION_STR created locally." +read -p "Push to origin (includes tags)? [y/N]: " push_confirm + +if [[ "$push_confirm" == "y" || "$push_confirm" == "Y" ]]; then + git push origin --tags + echo "Done! Gitea will create release from tag $NEXT_VERSION_STR" +else + echo "Release prepared locally. Push manually with: git push origin --tags" +fi