feat(release): Enhance JetBrains changelog generation with improved filtering and formatting
Improved JetBrains Changelog Generation Script
A new script, vscode/scripts/jb-changelogs.sh, has been introduced and subsequently refactored to automate the generation of changelogs for JetBrains releases. Key improvements include:
-
Automated Changelog Generation: Automates the creation of JetBrains release changelogs.
-
Case-Insensitive Matching: Implements case-insensitive matching for commit types and domains.
-
Domain Grouping: Groups changes by domain and capitalizes domain names for improved readability.
-
Error Handling: Adds error handling for the
git logcommand and displays ungrouped changes. -
Filtering Logic: Fixes filtering logic and adds a cleanup step to remove temporary files.
-
Section Processing: Introduces section processing (Features, Fixes, Changes, Chores, Uncategorized) to handle different types of entries, ensuring that only sections with content are displayed. Uncategorized entries are also included.
-
Enhanced Output: Improves the header, error messages, and includes version information at the top of the generated changelog, displaying "from" and "to" tags.
Why
We needed a more robust solution for generating JetBrains changelogs. The current manual process is time-consuming and error-prone. This script addresses the need for:
- Filtering changes specific to JetBrains and shared components
- Proper categorization by type and domain
- Consistent formatting in line with our release standards
- Reducing release captain workload during the JetBrains release process
This is part of our broader effort to improve the release process as described in the Release Playbook.
How to Test
You can test the script by running:
./vscode/scripts/jb-changelogs.sh jb-v7.65.0 jb-v7.66.0
This will generate a JB-CHANGELOG.md file in the current directory with all changes between those two tags, properly filtered and formatted. Verify that:
- Only changes in
jetbrains/,lib/,agent/, andvscode/webviews/directories are included - Changes are grouped by type (Features, Fixes, etc.) and then by domain
- The output is properly formatted with appropriate headers