7.1 KiB
Generate Release Notes
A JavaScript ESM script to generate release notes for InfluxDB projects by analyzing git commits between two versions.
InfluxDB 3 Core/Enterprise
This script supports the InfluxDB 3 Core/Enterprise relationship and tagged releases.
InfluxDB 3 Clustered
See the Clustered release process.
Features
- Flexible repository support: Handle single or multiple repositories
- Multiple output formats:
- Integrated: All repositories' changes integrated in unified sections
- Separated: Primary repository first, then secondary repositories
- Merge commit support: Extracts features and fixes from merge commit bodies
- Conventional commit parsing: Supports
feat:
,fix:
,perf:
, etc. - PR link generation: Automatically links to GitHub pull requests (configurable per repository)
- JSON configuration: Full configuration support via JSON files
- Enhanced commit messages: Categorizes commits based on affected areas (database, CLI, API, etc.)
- Customizable templates: Configure headers, labels, and intro text for separated format
Usage
Basic Usage
# Single repository, standard format
node generate-release-notes.js v3.1.0 v3.2.0 /path/to/repo
# Multiple repositories (auto-detects Core/Enterprise format)
node generate-release-notes.js v3.1.0 v3.2.0 /path/to/influxdb /path/to/influxdb_pro
# Skip fetching from remote
node generate-release-notes.js --no-fetch v3.1.0 v3.2.0 /path/to/repo
# Pull latest changes (use with caution)
node generate-release-notes.js --pull v3.1.0 v3.2.0 /path/to/repo
# Omit PR links from release notes
node generate-release-notes.js --no-pr-links v3.1.0 v3.2.0 /path/to/repo
Advanced Usage
# Explicit format specification
node generate-release-notes.js --format separated v3.1.0 v3.2.0 /path/to/influxdb /path/to/influxdb_pro
# Using JSON configuration
node generate-release-notes.js --config config.json v3.1.0 v3.2.0
# Using product-specific configurations
node generate-release-notes.js --config config/influxdb3-core-enterprise.json v3.2.0 v3.2.1
node generate-release-notes.js --config config/influxdb-v2.json v2.7.0 v2.7.1
node generate-release-notes.js --config config/influxdb3-clustered.json v1.0.0 v1.1.0
Configuration File
Create a JSON configuration file for complex setups:
{
"outputFormat": "separated",
"primaryRepo": "influxdb",
"repositories": [
{
"name": "influxdb",
"path": "/path/to/influxdb",
"label": "Core",
"includePrLinks": true
},
{
"name": "influxdb_pro",
"path": "/path/to/influxdb_pro",
"label": "Enterprise",
"includePrLinks": false
}
],
"separatedTemplate": {
"header": "> [!Note]\n> Custom header text here",
"primaryLabel": "Primary Repository",
"secondaryLabel": "Secondary Repositories",
"secondaryIntro": "Additional features and fixes from secondary repositories:"
}
}
Output Formats
Integrated Format
All repositories' changes are integrated together in unified sections with repository labels and enhanced descriptions:
## v3.2.1 {date="2025-07-03"}
### Features
- [influxdb] **Database management**: Allow hard_deleted date of deleted schema to be updated ([#26574](https://github.com/influxdata/influxdb/pull/26574))
- [influxdb_pro] **License management**: Amend license info ([#987](https://github.com/influxdata/influxdb/pull/987))
### Bug Fixes
- [influxdb] **CLI**: Add help text for the new update subcommand ([#26569](https://github.com/influxdata/influxdb/pull/26569))
When using --no-pr-links
, the PR links are omitted:
## v3.2.1 {date="2025-07-03"}
### Features
- [influxdb] **Database management**: Allow hard_deleted date of deleted schema to be updated
- [influxdb_pro] **License management**: Amend license info
### Bug Fixes
- [influxdb] **CLI**: Add help text for the new update subcommand
Separated Format
Primary repository changes are shown first, followed by secondary repository changes. Ideal for products where one repository is a superset of another:
> [!Note]
> #### InfluxDB 3 Core and Enterprise relationship
>
> InfluxDB 3 Enterprise is a superset of InfluxDB 3 Core.
> All updates to Core are automatically included in Enterprise.
> The Enterprise sections below only list updates exclusive to Enterprise.
## v3.2.1 {date="2025-07-03"}
### Core
#### Features
- **Database management**: Allow hard_deleted date of deleted schema to be updated ([#26574](https://github.com/influxdata/influxdb/pull/26574))
### Enterprise
All Core updates are included in Enterprise. Additional Enterprise-specific features and fixes:
#### Features
- **License management**: Amend license info ([#987](https://github.com/influxdata/influxdb/pull/987))
Configuration Options
Repository Configuration
Each repository in the configuration can have:
name
: Repository identifierpath
: Path to the repositorylabel
: Label used in outputincludePrLinks
: Whether to include PR links (boolean)
Separated Format Template
When using separated format, you can customize:
header
: Markdown header text shown at the topprimaryLabel
: Section label for primary repositorysecondaryLabel
: Section label for secondary repositoriessecondaryIntro
: Introduction text for secondary sectionprimaryRepo
: Name or index of the primary repository
Migration from Bash
This JavaScript version replaces the previous bash script with the following improvements:
- Better error handling: More robust git command execution
- Flexible configuration: JSON-based configuration support
- Cleaner code structure: Object-oriented design with clear separation of concerns
- Enhanced regex handling: Fixed merge commit parsing issues
- Cross-platform compatibility: Works on all platforms with Node.js
Output Location
Generated release notes are saved to helper-scripts/output/release-notes/release-notes-{version}.md
.
Requirements
- Node.js (ES modules support)
- Git repositories with the specified version tags
- Access to the git repositories (local or remote)
Command Line Options
--no-fetch
: Skip fetching latest commits from remote--pull
: Pull latest changes (implies fetch) - use with caution--no-pr-links
: Omit PR links from commit messages (default: include links)--config <file>
: Load configuration from JSON file--format <type>
: Output format: 'integrated' or 'separated'-h, --help
: Show help message
Example Configurations
InfluxDB 3 Core/Enterprise
See config/influxdb3-core-enterprise.json
for a configuration that:
- Uses separated format
- Sets influxdb as primary repository (Core)
- Sets influxdb_pro as secondary repository (Enterprise)
- Includes PR links for Core, excludes them for Enterprise
- Adds custom header explaining the Core/Enterprise relationship
InfluxDB v2
See config/influxdb-v2.json
for a simple single-repository configuration using integrated format.
InfluxDB 3 Clustered
See config/influxdb3-clustered.json
for Kubernetes operator release notes.