diff --git a/.gitea/workflows/auto-tag-develop.yml b/.gitea/workflows/auto-tag-develop.yml index 5bb4ac5..48f28d5 100644 --- a/.gitea/workflows/auto-tag-develop.yml +++ b/.gitea/workflows/auto-tag-develop.yml @@ -16,30 +16,50 @@ jobs: token: ${{ secrets.RELEASE_TOKEN }} persist-credentials: true - - name: Create next tag v0.0.X + - name: Create next tag from config/version.yaml shell: bash run: | set -euo pipefail - # Skip if current commit already has a v0.0.* tag - if git tag --points-at HEAD | grep -qE '^v0\.0\.'; then + # Skip if current commit already has a vX.Y.Z tag + if git tag --points-at HEAD | grep -qE '^v[0-9]+\.[0-9]+\.[0-9]+$'; then echo "Tag already exists on this commit. Skipping." exit 0 fi - last_tag="$(git tag -l 'v0.0.*' --sort=-v:refname | head -n1 || true)" - if [ -z "$last_tag" ]; then - next_tag="v0.0.1" - else - patch="${last_tag##v0.0.}" - if ! [[ "$patch" =~ ^[0-9]+$ ]]; then - echo "Unexpected tag format: $last_tag" >&2 - exit 1 - fi - next_tag="v0.0.$((patch + 1))" + changed_version=false + if git diff --name-only "${{ gitea.event.before }}" "${{ gitea.event.after }}" | grep -q '^config/version\.yaml$'; then + changed_version=true fi - git config user.name "gitea-actions" - git config user.email "gitea-actions@local" - git tag "$next_tag" - git push origin "$next_tag" + read_version() { + awk -F': *' '/app\.version:/{print $2}' config/version.yaml | tr -d '[:space:]' | tr -d "'\"" + } + + if $changed_version; then + version="$(read_version)" + if ! [[ "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "Invalid version in version.yaml: $version" >&2 + exit 1 + fi + else + last_tag="$(git tag -l 'v*' --sort=-v:refname | head -n1 || true)" + if [ -z "$last_tag" ]; then + version="0.1.0" + else + base="${last_tag#v}" + IFS='.' read -r major minor patch <<< "$base" + version="${major}.${minor}.$((patch + 1))" + fi + + printf "parameters:\\n app.version: '%s'\\n" "$version" > config/version.yaml + git config user.name "gitea-actions" + git config user.email "gitea-actions@local" + git add config/version.yaml + git commit -m "chore: bump version to v$version" || true + git push origin develop || true + fi + + tag="v$version" + git tag "$tag" + git push origin "$tag" diff --git a/.idea/data_source_mapping.xml b/.idea/data_source_mapping.xml index 9036044..531f7a7 100644 --- a/.idea/data_source_mapping.xml +++ b/.idea/data_source_mapping.xml @@ -2,5 +2,9 @@ + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 968a9a5..a3262d4 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -4,19 +4,11 @@