-
Notifications
You must be signed in to change notification settings - Fork 34
Add changelog bundle and render commands #2341
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
lcawl
wants to merge
59
commits into
main
Choose a base branch
from
changelog-manifest
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…ect' Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
This was referenced Jan 7, 2026
2 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
docs-builder changelog bundlecommand that collects one or more changelogs into a single YAML file (to align with a product release).docs-builder changelog rendercommand that generates Docs V3-friendly markdown files from one or more changelog bundles.Impetus
The goal is to have a stop-gap way to:
elastic-agent-changelog-tool buildandgradlew bundleChangelogscommands respectively).elastic-agent-changelog-tool renderandgradlew generateReleaseNotescommands respectively)Behaviour
The
bundlecommand can create the list based on (a) all changelogs in a folder, (b) changelogs that have specific product and target values, (c) changelogs that have specific PR values. Only (a) was existing functionality. The long-term goal is to have these manifests generated from the list of PRs associated with a github release or deployment event (then optionally add known issues and security issues and remove feature-flagged changelogs as desired).Examples
An example of the use of both the
bundleandrendercommands can be found in https://github.com/elastic/cloud/pull/150210Bundle
Bundle a list of PRs
You can use the
--prsoption (with the--repoand--owneroptions if you provide only the PR numbers) to create a bundle of the changelogs that relate to those pull requests. For example:Bundle by PRs in file
The
--prsoption also supports the use of a file that lists the PRs.For example, if you have a file with the following PR URLs:
Run the bundle command to reference this file and explicitly set the bundle's product metadata:
Alternatively, if the file contains just a list of PR numbers, you must specify the
--repoand--owneroptions:Both variations create a bundle like this:
In this example, none of the changelogs had
targetorlifecycleproduct values, therefore there's noversioninfo in this bundle.Bundle by product and target
If you specify the
--input-productsoption, the bundle contains only changelogs that contain one or more of the specified values:NOTE: As of #2429 you must always specify "product target lifecycle" (or else a wildcard asterisk).
Even if the changelogs also have other product values, only those specified in the bundle command appear in the output:
Bundle all changelog files
NOTE: If you have changelogs that apply to multiple products and/or versions in your directory, this can result in a potentially unrealistic bundle. This command option was added to replicate existing behaviour in the
elastic-agent-changelog-tool buildandgradlew bundleChangelogcommands and will likely be deprecated.Copy the changelogs into the bundle
To include the contents of the changelogs, use the
--resolveoption:./docs-builder changelog bundle --prs 108875,135873,136886 --repo elasticsearch --owner elastic --output-products "elasticsearch 9.2.2" --resolveThis generates output that's similar to the existing Elastic Agent bundles, for example https://github.com/elastic/elastic-agent/blob/main/changelog/9.2.2.yaml
The command is ready to use. Build succeeds and the help text displays correctly.
Render
For example, if you have a bundle like this:
You can render it to markdown files as follows:
./docs-builder changelog render \ --input "changelog-bundle.1.yaml" --title 9.2.2 --output ./release-notesThe command merges all bundles, resolves file references using each bundle's directory, uses the appropriate repo for PR/issue links, and renders markdown files with the specified title.
For example, it generates a
9.2.2folder in the specified output directory and createsbreaking-changes.md,deprecations.md, andindex.mdfiles. Theindex.mdfile in this case contains:If you add the
--subsectionsoption to the command, the output changes as follows:There is a
--hide-featuresto comment out changelogs that match specificfeature-idvalues per #2412.There is also
--hide-private-linksto comment out the PR and issue URLs for cases where we're working in private repos per #2408.Finally, the command also supports the use of a
--configoption and heeds the presence of arender_blockersdefinition if we want to comment out changelogs that match specificareaortypevalues per #2426.These output files can be integrated into existing release note docs by using file inclusions. For example, view https://github.com/elastic/cloud/pull/150210
Outstanding items
All known outstanding items have been addressed.
Generative AI disclosure
Tool(s) and model(s) used: composer-1 agent, claude-4.5-sonnet