﻿---
title: changelog gh-release cli command
description: Create changelog files and a bundle from a GitHub release by parsing pull request references from the release notes. For general information about changelogs,...
url: https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/2736/cli/changelog/gh-release
products:
  - Elastic Docs Builder
---

# changelog gh-release cli command
```bash
docs-builder changelog gh-release <repo> [<version>] [options]
```

Create changelog files and a bundle from a GitHub release by parsing pull request references from the release notes.
<important>
  Only automated GitHub release notes (the default format or [Release Drafter](https://github.com/release-drafter/release-drafter) format) are supported at this time.
</important>

For general information about changelogs, go to [Create release notes from changelogs](https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/2736/contribute/changelog).

## Arguments

<definitions>
  <definition term="<repo> string required">
    Required: GitHub repository in owner/repo format (e.g., "elastic/elasticsearch" or just "elasticsearch" which defaults to elastic/elasticsearch)
  </definition>
  <definition term="<version> string">
    Optional: Version tag to fetch (e.g., "v9.0.0", "9.0.0"). Defaults to "latest"
    **Default:** `latest`
  </definition>
</definitions>


## Options

<definitions>
  <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="--description string">
    Optional: Bundle description text with placeholder support. Supports VERSION, LIFECYCLE, OWNER, and REPO placeholders. Overrides bundle.description from config.
  </definition>
  <definition term="--output string">
    Optional: Output directory for changelog files. Falls back to bundle.directory in changelog.yml when not specified. Defaults to './changelogs'
  </definition>
  <definition term="--release-date string">
    Optional: Explicit release date for the bundle in YYYY-MM-DD format. Overrides GitHub release published date.
  </definition>
  <definition term="--[no-]strip-title-prefix">
    Optional: Remove square brackets and text within them from the beginning of PR titles (e.g., "[Inference API] Title" becomes "Title")
    **Default:** `false`
  </definition>
  <definition term="--[no-]warn-on-type-mismatch">
    Optional: Warn when the type inferred from release notes section headers doesn't match the type derived from PR labels. Defaults to true
    **Default:** `false`
  </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

The command creates two types of output in the directory specified by `--output`:
- One YAML changelog file per pull request found in the release notes.
- A bundle file at `{output}/bundles/{version}-{product}-bundle.yml` that references all created changelog files.

The product, target version, and lifecycle are inferred automatically from the release tag and the repository name (via [products.yml](https://github.com/elastic/docs-builder/blob/main/config/products.yml)). For example, a tag of `v9.2.0` on `elastic/elasticsearch` creates changelogs with `product: elasticsearch`, `target: 9.2.0`, and `lifecycle: ga`.

## Configuration

The `rules.bundle` section of your `changelog.yml` applies to bundles created by this command.
For details, refer to [Changelog configuration reference > rules.bundle](/elastic/docs-builder/pull/2736/contribute/configure-changelogs-ref#rules-bundle).

## Examples

```sh
# Latest release
docs-builder changelog gh-release elastic/elasticsearch

# Specific version tag
docs-builder changelog gh-release elastic/elasticsearch v9.2.0

# Short repository name (defaults to elastic/ owner)
docs-builder changelog gh-release elasticsearch v9.2.0

# Custom output directory
docs-builder changelog gh-release elasticsearch v9.2.0 \
  --output ./docs/changelog \
  --config ./docs/changelog.yml

# Description with placeholders
docs-builder changelog gh-release elasticsearch v9.2.0 \
  --description "Elasticsearch {version} release. Download: https://github.com/{owner}/{repo}/releases/tag/v{version}"
```