Skip to content

Commit b744328

Browse files
Shebyyygrayankit
andauthored
feat: Update workflow to clear and regenerate changelog for each release (#15)
* git: Update workflow to clear and regenerate changelog for each release * git: changelog will run after all build * added an essential package for linux build * changed to macos 12 * changed to macos 13 --------- Co-authored-by: Ankit Grai <ankigray@outlook.com>
1 parent 038569b commit b744328

File tree

1 file changed

+117
-3
lines changed

1 file changed

+117
-3
lines changed

.github/workflows/release.yml

Lines changed: 117 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ jobs:
7272
flutter-version: 3.24.1
7373
- run: |
7474
sudo apt-get update -y
75-
sudo apt-get install -y ninja-build libgtk-3-dev
75+
sudo apt-get install -y ninja-build libgtk-3-dev webkit2gtk-4.1
7676
- run: flutter pub get
7777
- run: flutter build linux
7878
- name: Archive app
@@ -86,7 +86,7 @@ jobs:
8686
with:
8787
files: build/linux/x64/release/bundle/Dantotsu_Linux_${{github.ref_name}}.zip
8888
build_ios_and_macos:
89-
runs-on: macos-latest
89+
runs-on: macos-13
9090
permissions:
9191
contents: write
9292
pull-requests: write
@@ -177,4 +177,118 @@ jobs:
177177
-X POST \
178178
-d "{\"content\": \"$MESSAGE\"}" \
179179
$DISCORD_WEBHOOK_URL
180-
180+
181+
generate-changelog:
182+
runs-on: ubuntu-latest
183+
needs: [build_android,build_windows,build_linux,build_ios_and_macos]
184+
steps:
185+
- name: Checkout Code
186+
uses: actions/checkout@v4
187+
with:
188+
fetch-depth: 0
189+
190+
# Clear existing CHANGELOG.md
191+
- name: Clear CHANGELOG.md
192+
run: |
193+
echo ""> CHANGELOG.md
194+
echo "" >> CHANGELOG.md
195+
196+
- name: Get previous tag
197+
id: get_prev_tag
198+
run: |
199+
echo "Getting the previous tag..."
200+
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
201+
if [ -z "$PREV_TAG" ]; then
202+
PREV_TAG=$(git rev-list --max-parents=0 HEAD)
203+
fi
204+
echo "prev_tag=$PREV_TAG" >> $GITHUB_ENV
205+
206+
- name: Get commit messages between tags
207+
id: get_commits
208+
run: |
209+
COMMITS=$(git log ${{ env.prev_tag }}..HEAD --pretty=format:'%h %s' | tr '\n' '|')
210+
echo "commits=$COMMITS" >> $GITHUB_ENV
211+
212+
- name: Categorize commits
213+
id: categorize
214+
run: |
215+
echo "Categorizing commits..."
216+
FEATURES=""
217+
BUG_FIXES=""
218+
REFACTORS=""
219+
STYLE_CHANGES=""
220+
PERFORMANCE=""
221+
CHORES=""
222+
REPO_URL="https://github.com/${{ github.repository }}"
223+
224+
IFS='|' read -ra COMMIT_LIST <<< "${{ env.commits }}"
225+
echo "Commit list: ${COMMIT_LIST[@]}"
226+
for LINE in "${COMMIT_LIST[@]}"; do
227+
HASH=$(echo "$LINE" | awk '{print $1}')
228+
MESSAGE=$(echo "$LINE" | cut -d' ' -f2-)
229+
LINK="[$HASH]($REPO_URL/commit/$HASH)"
230+
231+
FORMATTED_COMMIT="* $LINK: $MESSAGE"
232+
echo "Processing commit: $FORMATTED_COMMIT"
233+
if [[ $MESSAGE == feat* ]]; then
234+
FEATURES+="$FORMATTED_COMMIT\n"
235+
elif [[ $MESSAGE == fix* || $MESSAGE == bug* || $MESSAGE == improvement* || $MESSAGE == patch* ]]; then
236+
BUG_FIXES+="$FORMATTED_COMMIT\n"
237+
elif [[ $MESSAGE == refactor* ]]; then
238+
REFACTORS+="$FORMATTED_COMMIT\n"
239+
elif [[ $MESSAGE == style* ]]; then
240+
STYLE_CHANGES+="$FORMATTED_COMMIT\n"
241+
elif [[ $MESSAGE == perf* ]]; then
242+
PERFORMANCE+="$FORMATTED_COMMIT\n"
243+
elif [[ $MESSAGE == chore* || $MESSAGE == docs* || $MESSAGE == build* || $MESSAGE == ci* ]]; then
244+
CHORES+="$FORMATTED_COMMIT\n"
245+
fi
246+
done
247+
248+
# Removed the version tag section
249+
# echo "### ${GITHUB_REF#refs/tags/}" >> CHANGELOG.md # No version tag added
250+
251+
if [ -n "$FEATURES" ]; then
252+
echo "### 🎉 New Features" >> CHANGELOG.md
253+
echo -e "$FEATURES" >> CHANGELOG.md
254+
fi
255+
if [ -n "$BUG_FIXES" ]; then
256+
echo "### 🛠️ Bug Fixes & Improvements" >> CHANGELOG.md
257+
echo -e "$BUG_FIXES" >> CHANGELOG.md
258+
fi
259+
if [ -n "$REFACTORS" ]; then
260+
echo "### 🔧 Refactors" >> CHANGELOG.md
261+
echo -e "$REFACTORS" >> CHANGELOG.md
262+
fi
263+
if [ -n "$STYLE_CHANGES" ]; then
264+
echo "### 🎨 Style Changes" >> CHANGELOG.md
265+
echo -e "$STYLE_CHANGES" >> CHANGELOG.md
266+
fi
267+
if [ -n "$PERFORMANCE" ]; then
268+
echo "### 🚀 Performance Improvements" >> CHANGELOG.md
269+
echo -e "$PERFORMANCE" >> CHANGELOG.md
270+
fi
271+
if [ -n "$CHORES" ]; then
272+
echo "### 🧹 Chores & Documentation" >> CHANGELOG.md
273+
echo -e "$CHORES" >> CHANGELOG.md
274+
fi
275+
276+
- name: Commit and push changelog
277+
run: |
278+
git config --global user.name "GitHub Actions"
279+
git config --global user.email "actions@github.com"
280+
git add CHANGELOG.md
281+
git commit -m "Update changelog for version ${{ github.ref_name }}"
282+
git push origin HEAD:main
283+
284+
- name: Set Tag Variable
285+
id: tag
286+
run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
287+
288+
- name: Create or Update Release
289+
uses: ncipollo/release-action@v1
290+
with:
291+
token: ${{ secrets.GITHUB_TOKEN }}
292+
bodyFile: CHANGELOG.md
293+
tag: ${{ env.TAG }}
294+
allowUpdates: true

0 commit comments

Comments
 (0)