11name : Create Release on Version Bump
22
33on :
4+ workflow_dispatch : # Manually trigger
5+ inputs :
6+ force :
7+ description : " Force publish even if versions match"
8+ required : false
9+ default : " false"
410 push :
511 branches : [master]
612
713jobs :
8- extract :
14+ publish_release :
915 runs-on : ubuntu-latest
1016 outputs :
11- newest_version : ${{ steps.extract.outputs.newest_version }}
17+ new_version : ${{ steps.extract.outputs.new_version }}
1218 old_version : ${{ steps.extract.outputs.old_version }}
13- prev_newest_version : ${{ steps.extract.outputs.prev_newest_version }}
1419 changelog : ${{ steps.extract.outputs.changelog }}
1520
1621 steps :
@@ -28,29 +33,28 @@ jobs:
2833 line2=$(echo "${versions[1]}" | cut -d: -f1)
2934 line3=$(echo "${versions[2]}" | cut -d: -f1 || echo "\$")
3035
31- newest_version=$(echo "${versions[0]}" | sed -E 's/^.*##[[:space:]]*\[?([0-9]+\.[0-9]+\.[0-9]+)\]?.*/\1/')
32- old_version=$(echo "${versions[1]}" | sed -E 's/^.*##[[:space:]]*\[?([0-9]+\.[0-9]+\.[0-9]+)\]?.*/\1/')
33- prev_newest_version=$(git show ${{ steps.prev.outputs.sha }}:package.json | jq -r .version)
36+ new_version=$(echo "${versions[0]}" | sed -E 's/^.*##[[:space:]]*\[?([0-9]+\.[0-9]+\.[0-9]+)\]?.*/\1/')
37+ old_version=$(git show ${{ steps.prev.outputs.sha }}:package.json | jq -r .version)
3438
3539 changelog=$(sed -n "$line1,$((line2 - 1))p" CHANGELOG.md | tail -n +2)
3640
37- echo "newest_version=$newest_version " >> "$GITHUB_OUTPUT"
41+ echo "new_version=$new_version " >> "$GITHUB_OUTPUT"
3842 echo "old_version=$old_version" >> "$GITHUB_OUTPUT"
39- echo "prev_newest_version=$prev_newest_version" >> "$GITHUB_OUTPUT"
4043 echo "changelog<<EOF" >> "$GITHUB_OUTPUT"
4144 echo "$changelog" >> "$GITHUB_OUTPUT"
4245 echo "EOF" >> "$GITHUB_OUTPUT"
4346
4447 - name : Verify version matches package.json and package-lock.json
4548 run : |
46- changelog_version="${{ steps.version.outputs.newest_version }}"
49+ changelog_version="${{ steps.version.outputs.new_version }}"
4750
4851 pkg_version=$(jq -r .version package.json)
4952 lock_version=$(jq -r .version package-lock.json)
5053
51- echo "CHANGELOG.md: $changelog_version"
52- echo "package.json: $pkg_version"
53- echo "package-lock.json:$lock_version"
54+ echo "CHANGELOG.md: $changelog_version"
55+ echo "package.json: $pkg_version"
56+ echo "package-lock.json: $lock_version"
57+ echo "Previous version: $lock_version"
5458
5559 if [[ "$pkg_version" != "$changelog_version" ]]; then
5660 echo "❌ Version mismatch: package.json ($pkg_version) != CHANGELOG.md ($changelog_version)"
@@ -65,14 +69,14 @@ jobs:
6569 echo "✅ Versions match"
6670
6771 - name : Create tag and release
68- if : steps.version.outputs.newest_version != steps.version.outputs.prev_newest_version
72+ if : ${{ steps.version.outputs.new_version != steps.version.outputs.old_version || github.event.inputs.force == 'true' }}
6973 uses : softprops/action-gh-release@v1
7074 with :
71- tag_name : v${{ steps.version.outputs.newest_version }}
72- name : Release v${{ steps.version.outputs.newest_version }}
75+ tag_name : v${{ steps.version.outputs.new_version }}
76+ name : Release v${{ steps.version.outputs.new_version }}
7377 body : |
7478 ${{ env.changelog }}
7579
76- **Full Changelog**: https://github.com/augustocdias/vscode-shell-command/compare/v${{ steps.version.outputs.old_version }}...v${{ steps.version.outputs.newest_version }}
80+ **Full Changelog**: https://github.com/augustocdias/vscode-shell-command/compare/v${{ steps.version.outputs.old_version }}...v${{ steps.version.outputs.new_version }}
7781 env :
7882 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments