{"id":19368449,"url":"https://github.com/anchore/chronicle","last_synced_at":"2025-04-23T15:30:41.274Z","repository":{"id":42451440,"uuid":"412206966","full_name":"anchore/chronicle","owner":"anchore","description":"a fast changelog generator sourced from PRs and Issues","archived":false,"fork":false,"pushed_at":"2024-10-29T13:04:04.000Z","size":415,"stargazers_count":52,"open_issues_count":16,"forks_count":5,"subscribers_count":15,"default_branch":"main","last_synced_at":"2024-10-29T15:21:29.639Z","etag":null,"topics":["changelog","changelog-generator","github","golang","hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anchore.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-30T19:52:14.000Z","updated_at":"2024-10-29T13:04:06.000Z","dependencies_parsed_at":"2023-12-14T13:40:29.028Z","dependency_job_id":"578b5e0c-7841-4044-9844-d1a04b7ff057","html_url":"https://github.com/anchore/chronicle","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anchore%2Fchronicle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anchore%2Fchronicle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anchore%2Fchronicle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anchore%2Fchronicle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anchore","download_url":"https://codeload.github.com/anchore/chronicle/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250460239,"owners_count":21434229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["changelog","changelog-generator","github","golang","hacktoberfest"],"created_at":"2024-11-10T08:06:28.074Z","updated_at":"2025-04-23T15:30:40.939Z","avatar_url":"https://github.com/anchore.png","language":"Go","readme":"# chronicle\n\n[![Validations](https://github.com/anchore/chronicle/actions/workflows/validations.yaml/badge.svg)](https://github.com/anchore/chronicle/actions/workflows/validations.yaml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/anchore/chronicle)](https://goreportcard.com/report/github.com/anchore/chronicle)\n[![GitHub release](https://img.shields.io/github/release/anchore/chronicle.svg)](https://github.com/anchore/chronicle/releases/latest)\n[![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/anchore/chronicle.svg)](https://github.com/anchore/chronicle)\n[![License: Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/anchore/chronicle/blob/main/LICENSE)\n[![Slack Invite](https://img.shields.io/badge/Slack-Join-blue?logo=slack)](https://anchore.com/slack)\n\n\n**A fast changelog generator that sources changes from GitHub PRs and issues, organized by labels.**\n\n\nCreate a changelog from the last GitHib release until the current git HEAD tag/commit for the git repo in the current directory:\n```bash\nchronicle \n```\n\nCreate a changelog with all changes from v0.16.0 until current git HEAD tag/commit for the git repo in the current directory:\n```bash\nchronicle --since-tag v0.16.0\n```\n\nCreate a changelog between two specific tags for a repo at the given path\n```bash\nchronicle --since-tag v0.16.0 --until-tag v0.18.0 ./path/to/git/repo\n```\n\nCreate a changelog and guess the release version from the set of changes in the changelog\n```bash\nchronicle -n\n```\n\nJust guess the next release version based on the set of changes (don't create a changelog)\n```bash\nchronicle next-version\n```\n\n## Installation\n\n```bash\ncurl -sSfL https://raw.githubusercontent.com/anchore/chronicle/main/install.sh | sh -s -- -b /usr/local/bin\n```\n\n...or, you can specify a release version and destination directory for the installation:\n\n```\ncurl -sSfL https://raw.githubusercontent.com/anchore/chronicle/main/install.sh | sh -s -- -b \u003cDESTINATION_DIR\u003e \u003cRELEASE_VERSION\u003e\n```\n\n## Configuration\n\nConfiguration search paths:\n  - `.chronicle.yaml`\n  - `.chronicle/config.yaml`\n  - `~/.chronicle.yaml`\n  - `\u003cXDG_CONFIG_HOME\u003e/chronicle/config.yaml`\n\n### Default values\n\nConfiguration options (example values are the default):\n\n```yaml\n# the output format of the changelog\n# same as -o, --output, and CHRONICLE_OUTPUT env var\noutput: md\n\n# suppress all logging output\n# same as -q ; CHRONICLE_QUIET env var\nquiet: false\n\n# all logging options\nlog:\n  # use structured logging\n  # same as CHRONICLE_LOG_STRUCTURED env var\n  structured: false\n\n  # the log level\n  # same as CHRONICLE_LOG_LEVEL env var\n  level: \"warn\"\n\n  # location to write the log file (default is not to have a log file)\n  # same as CHRONICLE_LOG_FILE env var\n  file: \"\"\n\n# guess what the next release version is based on the current version and set of changes (cannot be used with --until-tag)\n# same as --speculate-next-version / -n ; CHRONICLE_SPECULATE_NEXT_VERSION env var\nspeculate-next-version: false\n\n# override the starting git tag for the changelog (default is to detect the last release automatically)\n# same as --since-tag / -s ; CHRONICLE_SINCE_TAG env var\nsince-tag: \"\"\n\n# override the ending git tag for the changelog (default is to use the tag or commit at git HEAD)\n# same as --until-tag / -u ; CHRONICLE_SINCE_TAG env var\nuntil-tag: \"\"\n\n# if the current release version is \u003c v1.0 then breaking changes will bump the minor version field\n# same as CHRONICLE_ENFORCE_V0 env var\nenforce-v0: false\n\n# the title used for the changelog\n# same as CHRONICLE_TITLE\ntitle: Changelog\n\n# all github-related settings\ngithub:\n  \n  # the github host to use (override for github enterprise deployments)\n  # same as CHRONICLE_GITHUB_HOST env var\n  host: github.com\n  \n  # do not consider any issues or PRs with any of the given labels\n  # same as CHRONICLE_GITHUB_EXCLUDE_LABELS env var\n  exclude-labels:\n    - duplicate\n    - question\n    - invalid\n    - wontfix\n    - wont-fix\n    - release-ignore\n    - changelog-ignore\n    - ignore\n  \n  # consider merged PRs as candidate changelog entries (must have a matching label from a 'github.changes' entry)\n  # same as CHRONICLE_GITHUB_INCLUDE_PRS env var\n  include-prs: true\n\n  # consider closed issues as candidate changelog entries (must have a matching label from a 'github.changes' entry)\n  # same as CHRONICLE_GITHUB_INCLUDE_ISSUES env var\n  include-issues: true\n\n  # issues can only be considered for changelog candidates if they have linked PRs that are merged (note: does NOT require github.include-issues to be set)\n  # same as CHRONICLE_GITHUB_ISSUES_REQUIRE_LINKED_PRS env var\n  issues-require-linked-prs: false\n  \n  # list of definitions of what labels applied to issues or PRs constitute a changelog entry. These entries also dictate \n  # the changelog section, the changelog title, and the semver field that best represents the class of change.\n  # note: cannot be set via environment variables\n  changes: [...\u003clist of entries\u003e...] # See \"Default GitHub change definitions\" section for more details\n\n```\n\n### Default GitHub change definitions\n\nThe `github.changes` configurable is a list of mappings, each that take the following fields:\n\n- `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).\n- `title`: _[string]_ title of the section in the changelog listing all entries.\n- `semver-field`: _[string]_ change entries will bump the respective semver field when guessing the next release version. Allowable values: `major`, `minor`, or `patch`.\n- `labels`: _[list of strings]_ all issue or PR labels that should match this change section.\n\nThe default value for `github.changes` is:\n\n```yaml\n- name: security-fixes\n  title: Security Fixes\n  semver-field: patch\n  labels:\n    - security\n    - vulnerability\n  \n- name: added-feature\n  title: Added Features\n  semver-field: minor\n  labels:\n    - enhancement\n    - feature\n    - minor\n  \n- name: bug-fix\n  title: Bug Fixes\n  semver-field: patch\n  labels:\n    - bug\n    - fix\n    - bug-fix\n    - patch\n  \n- name: breaking-feature\n  title: Breaking Changes\n  semver-field: major\n  labels:\n    - breaking\n    - backwards-incompatible\n    - breaking-change\n    - breaking-feature\n    - major\n    \n- name: removed-feature\n  title: Removed Features\n  semver-field: major\n  labels:\n    - removed\n  \n- name: deprecated-feature\n  title: Deprecated Features\n  semver-field: minor\n  labels:\n    - deprecated\n\n- name: unknown\n  title: Additional Changes\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanchore%2Fchronicle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanchore%2Fchronicle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanchore%2Fchronicle/lists"}