﻿---
title: changelog render cli command
description: Generate markdown or asciidoc files from changelog bundle files. To create bundle files, use changelog bundle cli command. For details and examples, go...
url: https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/2736/cli/changelog/render
products:
  - Elastic Docs Builder
---

# changelog render cli command
```bash
docs-builder changelog render [options]
```

Generate markdown or asciidoc files from changelog bundle files.
To create bundle files, use [changelog bundle cli command](https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/2736/cli/changelog/bundle).
For details and examples, go to [Publish changelogs](https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/2736/contribute/publish-changelogs).
The `render` command automatically discovers and merges `.amend-*.yaml` files with their parent bundle. For more information, go to [changelog bundle-amend cli command](https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/2736/cli/changelog/bundle-amend).
The `changelog render` command does **not** use `rules.publish` for filtering. Filtering must be done at bundle time using `rules.bundle`. For how the directive differs, see the [{changelog} directive syntax reference](https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/2736/syntax/changelog).

## Options

<definitions>
  <definition term="--input string[]">
    Required: Bundle input(s) in format "bundle-file-path|changelog-file-path|repo|link-visibility" (use pipe as delimiter). To merge multiple bundles, separate them with commas. Only bundle-file-path is required. link-visibility can be "hide-links" or "keep-links" (default). Use "hide-links" for private repositories; when set, all PR and issue links for each affected entry are hidden (entries may have multiple links via the prs and issues arrays). Paths support tilde (~) expansion and relative paths.
    **Repeatable:** pass `--input` multiple times to supply more than one value
  </definition>
  <definition term="--config string">
    Optional: Path to the changelog.yml configuration file. Defaults to 'docs/changelog.yml'
    **Constraints:** symbolic links not allowed, must exist, extensions: yml, yaml, supports `~` home expansion
  </definition>
  <definition term="--file-type string">
    Optional: Output file type. Valid
    **Values:** "markdown" or "asciidoc". Defaults to "markdown"
    **Default:** `markdown`
  </definition>
  <definition term="--hide-features string[]">
    Filter by feature IDs (comma-separated), or a path to a newline-delimited file containing feature IDs. Can be specified multiple times. Entries with matching feature-id values will be commented out in the output.
    **Repeatable:** pass `--hide-features` multiple times to supply more than one value
  </definition>
  <definition term="--output string">
    Optional: Output directory for rendered files. Defaults to current directory
  </definition>
  <definition term="--[no-]subsections">
    Optional: Group entries by area/component in subsections. For breaking changes with a subtype, groups by subtype instead of area. Defaults to false
    **Default:** `false`
  </definition>
  <definition term="--title string">
    Optional: Title to use for section headers in output files. Defaults to version from first bundle
  </definition>
  <definition term="-l --log-level enum">
    Minimum log level.
    **Values:** trace, debug, information, warning, error, critical, none
    **Default:** `information`
  </definition>
  <definition term="-c --config-source enum">
    Override the configuration source: local, remote
    **Values:** local, remote, embedded
  </definition>
  <definition term="--[no-]skip-private-repositories">
    Skip cloning private repositories
  </definition>
</definitions>


## Output formats


### Markdown

The default output (`--file-type markdown`) generates multiple files:
- `index.md` — features, enhancements, bug fixes, security updates, documentation changes, regressions, and other changes
- `breaking-changes.md` — breaking changes
- `deprecations.md` — deprecations
- `known-issues.md` — known issues
- `highlights.md` — highlighted entries (only created when at least one entry has `highlight: true`)


### Asciidoc

`--file-type asciidoc` generates a single file with all sections in order: security updates, bug fixes, highlights, new features and enhancements, breaking changes, deprecations, known issues, documentation, regressions, and other changes. The asciidoc output uses attribute references for links (for example, `{repo-pull}NUMBER[#NUMBER]`).

### Multiple PR and issue links

Changelog entries can reference multiple pull requests and issues via the `prs` and `issues` array fields. All links are rendered inline:
```md
* Fix ML calendar event update scalability issues. [#136886](https://github.com/elastic/elastic/pull/136886) [#136900](https://github.com/elastic/elastic/pull/136900)
```


## Examples

```sh
# Render a single bundle
docs-builder changelog render \
  --input "./docs/changelog/bundles/9.3.0.yaml" \
  --output ./release-notes

# Render with explicit changelog dir and repo
docs-builder changelog render \
  --input "~/docs/changelog/bundles/9.3.0.yaml|~/docs/changelog|elasticsearch" \
  --output ~/release-notes

# Merge multiple bundles
docs-builder changelog render \
  --input "./bundles/elasticsearch-9.3.0.yaml|./changelog|elasticsearch,./bundles/kibana-9.3.0.yaml|./changelog|kibana" \
  --output ./merged-release-notes

# Hide links from a private repository bundle
docs-builder changelog render \
  --input "./public-bundle.yaml|./changelog|elasticsearch|keep-links,./private-bundle.yaml|./private-changelog|internal-repo|hide-links" \
  --output ./release-notes
```