chronicle

A fast changelog generator that sources changes from GitHub PRs and issues, organized by labels.
Create a changelog from the last GitHib release until the current git HEAD tag/commit for the git repo in the current directory:
chronicle
Create a changelog with all changes from v0.16.0 until current git HEAD tag/commit for the git repo in the current directory:
chronicle --since-tag v0.16.0
Create a changelog between two specific tags for a repo at the given path
chronicle --since-tag v0.16.0 --until-tag v0.18.0 ./path/to/git/repo
Create a changelog and guess the release version from the set of changes in the changelog
chronicle -n
Just guess the next release version based on the set of changes (don't create a changelog)
chronicle next-version
Installation
curl -sSfL https://raw.githubusercontent.com/anchore/chronicle/main/install.sh | sh -s -- -b /usr/local/bin
...or, you can specify a release version and destination directory for the installation:
curl -sSfL https://raw.githubusercontent.com/anchore/chronicle/main/install.sh | sh -s -- -b <DESTINATION_DIR> <RELEASE_VERSION>
Configuration
Configuration search paths:
.chronicle.yaml
.chronicle/config.yaml
~/.chronicle.yaml
<XDG_CONFIG_HOME>/chronicle/config.yaml
Default values
Configuration options (example values are the default):
output: md
quiet: false
log:
structured: false
level: "warn"
file: ""
speculate-next-version: false
since-tag: ""
until-tag: ""
enforce-v0: false
title: Changelog
github:
host: github.com
exclude-labels:
- duplicate
- question
- invalid
- wontfix
- wont-fix
- release-ignore
- changelog-ignore
- ignore
include-prs: true
include-issues: true
issues-require-linked-prs: false
changes: [...<list of entries>...]
Default GitHub change definitions
The github.changes
configurable is a list of mappings, each that take the following fields:
name
: [string] singular, lowercase, hyphen-separated (no spaces) name that best represents the change (e.g. "breaking-change", "security", "added-feature", "enhancement", "new-feature", etc).
title
: [string] title of the section in the changelog listing all entries.
semver-field
: [string] change entries will bump the respective semver field when guessing the next release version. Allowable values: major
, minor
, or patch
.
labels
: [list of strings] all issue or PR labels that should match this change section.
The default value for github.changes
is:
- name: security-fixes
title: Security Fixes
semver-field: patch
labels:
- security
- vulnerability
- name: added-feature
title: Added Features
semver-field: minor
labels:
- enhancement
- feature
- minor
- name: bug-fix
title: Bug Fixes
semver-field: patch
labels:
- bug
- fix
- bug-fix
- patch
- name: breaking-feature
title: Breaking Changes
semver-field: major
labels:
- breaking
- backwards-incompatible
- breaking-change
- breaking-feature
- major
- name: removed-feature
title: Removed Features
semver-field: major
labels:
- removed
- name: deprecated-feature
title: Deprecated Features
semver-field: minor
labels:
- deprecated