@@ -146,12 +146,13 @@ jobs:
146146 # pyproject.toml aktualisieren
147147 sed -i "s/^version = .*/version = \"$NEW_VERSION\"/" pyproject.toml
148148
149- - name : Generate release notes
149+ - name : Generate release notes and update CHANGELOG
150150 id : release_notes
151151 run : |
152152 NEW_VERSION="${{ needs.check-for-release.outputs.version }}"
153153 RELEASE_TYPE="${{ needs.check-for-release.outputs.release_type }}"
154154 COMMIT_MSG="${{ github.event.head_commit.message }}"
155+ CURRENT_DATE=$(date '+%Y-%m-%d')
155156
156157 # Basis Release-Notes erstellen
157158 cat > release_notes.txt << EOF
@@ -180,17 +181,69 @@ jobs:
180181
181182 - Python Wheel (.whl)
182183 - Source Distribution (.tar.gz)
183- - Flatpak Bundle (.flatpak )
184+ - Docker Image (ghcr.io )
184185 - Vollständiger Quellcode
185186 EOF
186187
188+ # CHANGELOG.md automatisch aktualisieren
189+ echo "📝 Aktualisiere CHANGELOG.md..."
190+
191+ # Backup der aktuellen CHANGELOG erstellen
192+ cp CHANGELOG.md CHANGELOG.md.bak
193+
194+ # Neue CHANGELOG-Einträge basierend auf Commit-Message generieren
195+ NEW_CHANGELOG_ENTRY=""
196+
197+ # Änderungen aus Commit-Message extrahieren und kategorisieren
198+ if [[ "$COMMIT_MSG" =~ ^(feat|feature)(\(.+\))?: ]]; then
199+ NEW_CHANGELOG_ENTRY="### Added
200+ - $(echo "$COMMIT_MSG" | sed 's/^[^:]*: //')"
201+ elif [[ "$COMMIT_MSG" =~ ^(fix|bugfix)(\(.+\))?: ]]; then
202+ NEW_CHANGELOG_ENTRY="### Fixed
203+ - $(echo "$COMMIT_MSG" | sed 's/^[^:]*: //')"
204+ elif [[ "$COMMIT_MSG" =~ ^(docs|doc)(\(.+\))?: ]]; then
205+ NEW_CHANGELOG_ENTRY="### Documentation
206+ - $(echo "$COMMIT_MSG" | sed 's/^[^:]*: //')"
207+ elif [[ "$COMMIT_MSG" =~ ^(style|refactor)(\(.+\))?: ]]; then
208+ NEW_CHANGELOG_ENTRY="### Changed
209+ - $(echo "$COMMIT_MSG" | sed 's/^[^:]*: //')"
210+ elif [[ "$COMMIT_MSG" =~ ^(test|tests)(\(.+\))?: ]]; then
211+ NEW_CHANGELOG_ENTRY="### Testing
212+ - $(echo "$COMMIT_MSG" | sed 's/^[^:]*: //')"
213+ elif [[ "$COMMIT_MSG" =~ ^Merge[[:space:]]pull[[:space:]]request ]]; then
214+ # Für Merge-Commits: PR-Titel extrahieren
215+ PR_TITLE=$(echo "$COMMIT_MSG" | grep -o 'Merge pull request #[0-9]* from .*/.*' | sed 's/.*\///')
216+ NEW_CHANGELOG_ENTRY="### Added
217+ - $PR_TITLE (Pull Request merged)"
218+ else
219+ NEW_CHANGELOG_ENTRY="### Changed
220+ - $COMMIT_MSG"
221+ fi
222+
223+ # Neue CHANGELOG mit Version am Anfang erstellen
224+ cat > CHANGELOG.md << EOF
225+ ## [$NEW_VERSION] - $CURRENT_DATE
226+
227+ $NEW_CHANGELOG_ENTRY
228+
229+ EOF
230+
231+ # Rest der CHANGELOG (ab Zeile 8) anhängen, aber erste automatische Einträge überspringen
232+ sed -n '8,$p' CHANGELOG.md.bak >> CHANGELOG.md
233+
234+ echo "✅ CHANGELOG.md erfolgreich aktualisiert mit Version $NEW_VERSION"
235+
236+ # Überprüfung der CHANGELOG-Struktur
237+ echo "📋 Neue CHANGELOG-Struktur:"
238+ head -15 CHANGELOG.md
239+
187240 echo "Release-Notes erstellt für Version $NEW_VERSION"
188241
189242 - name : Commit version changes
190243 run : |
191244 NEW_VERSION="${{ needs.check-for-release.outputs.version }}"
192- git add VERSION __version__.py pyproject.toml
193- git commit -m "chore: bump version to $NEW_VERSION [skip ci]"
245+ git add VERSION __version__.py pyproject.toml CHANGELOG.md
246+ git commit -m "chore: bump version to $NEW_VERSION and update CHANGELOG [skip ci]"
194247
195248 - name : Create and push tag
196249 run : |
0 commit comments