@@ -15,22 +15,46 @@ jobs:
1515 name : versioning
1616 runs-on : ubuntu-latest
1717 outputs :
18- new_release_version : ${{ steps.release .outputs.new_release_version }}
19- new_release_published : ${{ steps.release .outputs.new_release_published }}
18+ new_release_version : ${{ steps.set-outputs .outputs.version }}
19+ new_release_published : ${{ steps.set-outputs .outputs.published }}
2020 steps :
2121 - name : Checkout
2222 uses : actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
2323 with :
2424 fetch-depth : 0
2525
26+ - name : Check existing release
27+ id : check-release
28+ run : |
29+ CURRENT_SHA=$(git rev-parse HEAD)
30+ EXISTING_TAG=$(git tag --points-at $CURRENT_SHA | grep '^v' | head -1)
31+ if [ -n "$EXISTING_TAG" ]; then
32+ echo "existing_tag=$EXISTING_TAG" >> $GITHUB_OUTPUT
33+ echo "existing_version=${EXISTING_TAG#v}" >> $GITHUB_OUTPUT
34+ echo "has_existing=true" >> $GITHUB_OUTPUT
35+ else
36+ echo "has_existing=false" >> $GITHUB_OUTPUT
37+ fi
38+
2639 - id : release
2740 name : Release
41+ if : steps.check-release.outputs.has_existing == 'false'
2842 uses : cycjimmy/semantic-release-action@16ca923e6ccbb50770c415a0ccd43709a8c5f7a4 # v4.2.2
2943 env :
3044 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
3145
32- - name : Use version output
33- run : echo "Released version is ${{ steps.release.outputs.new_release_version }}"
46+ - name : Set outputs
47+ id : set-outputs
48+ run : |
49+ if [ "${{ steps.check-release.outputs.has_existing }}" == "true" ]; then
50+ echo "version=${{ steps.check-release.outputs.existing_version }}" >> $GITHUB_OUTPUT
51+ echo "published=true" >> $GITHUB_OUTPUT
52+ echo "Using existing release: ${{ steps.check-release.outputs.existing_version }}"
53+ else
54+ echo "version=${{ steps.release.outputs.new_release_version }}" >> $GITHUB_OUTPUT
55+ echo "published=${{ steps.release.outputs.new_release_published }}" >> $GITHUB_OUTPUT
56+ echo "New release: ${{ steps.release.outputs.new_release_version }}"
57+ fi
3458
3559 release-bin :
3660 name : release-bin-github-${{ matrix.name }}
@@ -126,4 +150,4 @@ jobs:
126150 sed -i "s/^version = \".*\"/version = \"${{ needs.versioning.outputs.new_release_version }}\"/" Cargo.toml
127151
128152 - name : Release to crates.io
129- run : cargo publish --token ${{ secrets.CARGO_TOKEN }} --allow-dirty
153+ run : cargo publish --token ${{ secrets.CARGO_TOKEN }} --allow-dirty || true
0 commit comments