44 push :
55 tags :
66 - ' [0-9]+.[0-9]+.[0-9]+' # Stable release tags (e.g., 1.2.3)
7- - ' PR-[a-f0-9]{7} ' # Pre-release tags with 7-char commit SHA (e.g., PR-abc1234)
7+ - ' PR-[a-f0-9]+ ' # Pre-release tags with 7-char commit SHA (e.g., PR-abc1234)
88 workflow_dispatch :
99
1010permissions :
@@ -80,38 +80,47 @@ jobs:
8080 with :
8181 name : release-apk
8282
83- - name : Get previous tag
84- id : previousTag
83+ - name : Get previous stable tag
84+ id : previousStableTag
8585 run : |
86- name=$(git --no-pager tag --sort=creatordate --merged ${{ github.ref_name }} | tail -2 | head -1)
87- echo "previousTag: $name"
88- echo "previousTag=$name" >> $GITHUB_ENV
86+ name=$(git tag --sort=-creatordate | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' | head -1)
87+ echo "previousStableTag=$name" >> $GITHUB_ENV
88+
89+ - name : Get previous pre-release tag
90+ id : previousPreReleaseTag
91+ run : |
92+ name=$(git tag --sort=-creatordate | grep -E '^PR-[a-f0-9]{7}$' | head -1)
93+ if [ -z "$name" ]; then
94+ name="pre-release"
95+ fi
96+ echo "previousPreReleaseTag=$name" >> $GITHUB_ENV
8997
9098 - name : Generate changelogs
9199 id : changelog
92100 uses : requarks/changelog-action@v1
93101 with :
94102 token : ${{ secrets.GITHUB_TOKEN }}
95103 fromTag : ${{ github.ref_name }}
96- toTag : ${{ env.previousTag || 'HEAD' }}
97- excludeTypes : ${{ !startsWith(github.ref, 'refs/tags/PR-') && 'build,docs,other,style' || '' }}
104+ toTag : ${{ startsWith(github.ref, 'refs/tags/PR-') && env.previousPreReleaseTag || env.previousStableTag || 'HEAD' }}
105+ excludeTypes : ${{ !startsWith(github.ref, 'refs/tags/PR-') && 'build,docs,other,style,refactor ' || '' }}
98106 writeToFile : false
99107
108+
100109 - name : Manage pre-release
101110 if : startsWith(github.ref, 'refs/tags/PR-')
102111 env :
103112 GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
104113 run : |
105- echo "Attempting to delete pre-release tag..."
106-
114+ echo "Attempting to remove the pre-release tag..."
115+
107116 git tag -d pre-release || echo "Local tag 'pre-release' does not exist."
108117 git push origin :refs/tags/pre-release || echo "Remote tag 'pre-release' does not exist."
109-
118+ gh release delete pre-release --yes || echo "Failed to delete last pre-release."
119+
110120 CLEANED_CHANGES=$(echo '${{ steps.changelog.outputs.changes }}' | sed 's/`/`/g')
111-
121+
112122 echo "Creating new pre-release..."
113- gh release delete pre-release --yes || echo "Failed to delete last pre-release."
114- gh release create pre-release \
123+ gh release create ${{ github.ref_name }} \
115124 --title "${{ github.ref_name }}" \
116125 --notes "$(cat << EOF
117126 ##### _NOTE: Android TV is incomplete, the providers on this port are not yet installable. Though, you could test it now._
@@ -134,15 +143,16 @@ jobs:
134143 --prerelease \
135144 flixclusive-release.apk
136145
146+
137147 - name : Manage stable release
138148 if : " !startsWith(github.ref, 'refs/tags/PR-')"
139149 env :
140150 GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
141151 run : |
142152 gh release delete ${{ github.ref_name }} --yes || echo "Failed to delete ${{ github.ref_name }} release."
143-
153+
144154 CLEANED_CHANGES=$(echo '${{ steps.changelog.outputs.changes }}' | sed 's/`/`/g')
145-
155+
146156 gh release create ${{ github.ref_name }} \
147157 --title "${{ github.ref_name }}" \
148158 --notes "$(cat << EOF
@@ -210,4 +220,4 @@ jobs:
210220 git config user.email github-actions@github.com
211221 git add .
212222 git commit -m "Archive $(date +'%Y-%m-%d') [flixclusiveorg/Flixclusive@${GITHUB_SHA}]" || true
213- git push
223+ git push
0 commit comments