2222 - minor
2323 - major
2424
25- continue_prerelease :
26- type : boolean
27- description : Continue existing prerelease (if available)
28- default : false
29-
3025 specific_version :
3126 type : string
3227 description : Specify exact version (e.g., 3.3.0-alpha.1) - overrides other version settings
5247 token : ${{ steps.generate-token.outputs.token }}
5348 fetch-depth : 0
5449
55- - name : debug git tags
56- run : |
57- echo "All tags:"
58- git tag -l
59- echo "---"
60- echo "Tags sorted by version:"
61- git tag -l --sort=-v:refname
62- echo "---"
63- echo "Alpha tags sorted by version:"
64- git tag -l "*-alpha*" --sort=-v:refname
65- echo "---"
66- echo "Tag details:"
67- git for-each-ref --format="%(refname:short) %(objecttype) %(taggerdate)" refs/tags/
68- echo "---"
69- echo "Latest tag details:"
70- LATEST_TAG=$(git describe --tags --abbrev=0)
71- echo "Latest tag: $LATEST_TAG"
72- git show $LATEST_TAG
73-
7450 - name : initialize mandatory git config
7551 run : |
7652 git config user.name "GitHub Release Bot"
@@ -81,24 +57,31 @@ jobs:
8157
8258 - name : run release-it
8359 run : |
84- params=() # Determine prerelease logic
60+ params=()
61+
62+ # Determine prerelease logic
8563 if [[ -n "${{ github.event.inputs.specific_version }}" ]]; then
8664 params+=(--release=${{ github.event.inputs.specific_version }})
87- # Determine prerelease logic
8865 elif [[ "${{ github.event.inputs.release_type }}" == "stable" ]]; then
8966 params+=(--${{ github.event.inputs.version_bump }})
90- elif [[ "${{ github.event.inputs.continue_prerelease }}" == "true" ]]; then
67+ else
68+ # For prerelease types (alpha, beta, rc)
9169 # Add verbose logging to understand release-it's process
9270 params+=(--verbose)
9371 # Tell release-it to use prerelease tags
9472 params+=(--preReleaseId=${{ github.event.inputs.release_type }})
95- params+=(--increment=prerelease)
96- params+=(--preRelease=${{ github.event.inputs.release_type }})
9773 params+=(--git.tagMatch="v*-${{ github.event.inputs.release_type }}.*")
98- params+=(--plugins.@release-it/keep-a-changelog.keepUnreleased)
99- params+=(--no-plugins.@release-it/keep-a-changelog.strictLatest)
100- else
101- params+=(--${{ github.event.inputs.version_bump }})
74+
75+ # Check if we already have a prerelease of this type
76+ LATEST_PRERELEASE=$(git tag -l "*-${{ github.event.inputs.release_type }}*" --sort=-v:refname | head -n 1)
77+ if [[ -n "$LATEST_PRERELEASE" ]]; then
78+ echo "Found existing prerelease: $LATEST_PRERELEASE - continuing prerelease series"
79+ params+=(--increment=prerelease)
80+ else
81+ echo "No existing prerelease found - starting new prerelease series"
82+ params+=(--${{ github.event.inputs.version_bump }})
83+ fi
84+
10285 params+=(--preRelease=${{ github.event.inputs.release_type }})
10386 params+=(--plugins.@release-it/keep-a-changelog.keepUnreleased)
10487 params+=(--no-plugins.@release-it/keep-a-changelog.strictLatest)
11396 echo "command: release-it ${params[@]}"
11497 release-it "${params[@]}"
11598 env :
116- GITHUB_TOKEN : ${{ steps.generate-token.outputs.token }}
99+ GITHUB_TOKEN : ${{ steps.generate-token.outputs.token }}
0 commit comments