cody icon indicating copy to clipboard operation
cody copied to clipboard

feat(release): Enhance JetBrains changelog generation with improved filtering and formatting

Open PriNova opened this issue 11 months ago • 4 comments

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 log command 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:

  1. Filtering changes specific to JetBrains and shared components
  2. Proper categorization by type and domain
  3. Consistent formatting in line with our release standards
  4. 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:

  1. Only changes in jetbrains/, lib/, agent/, and vscode/webviews/ directories are included
  2. Changes are grouped by type (Features, Fixes, etc.) and then by domain
  3. The output is properly formatted with appropriate headers

Test plan

Screenshot 2025-03-25 210405

PriNova avatar Mar 25 '25 21:03 PriNova