Skip to content
Snippets Groups Projects
Commit e11921fc authored by Philipp Stadler's avatar Philipp Stadler
Browse files

docs: add git cliff changelog generation

parent 65e7ccff
No related branches found
No related tags found
1 merge request!8feat!: make all cards except speak in moloashi optional
......@@ -56,6 +56,47 @@ release-package-json-version-as-git-tag:
- ' echo package-json-tag: keeping older tag for $NPM_VERSION'
- fi
changelog:
image:
name: orhunp/git-cliff:latest
entrypoint: [""]
rules:
- if: $CI_COMMIT_TAG
variables:
GIT_STRATEGY: clone # clone entire repo instead of reusing workspace
GIT_DEPTH: 0 # avoid shallow clone to give cliff all the info it needs
stage: build
script:
- git-cliff --latest -o CHANGELOG.md
artifacts:
paths:
- CHANGELOG.md
release-notes:
stage: build
rules:
- if: $CI_COMMIT_TAG
needs:
- job: build
artifacts: true
- job: changelog
artifacts: true
variables:
# we just need the artifacts and don't need up-to-date source, so don't even fetch
GIT_STRATEGY: none
# we don't need anything in node_modules or python, so don't fetch the cache
cache: []
script:
- echo "# $CI_PROJECT_TITLE $CI_COMMIT_TAG" > RELEASE_NOTES.md
- echo "$CI_COMMIT_TAG of the Anki template HTMLs is ready 🎉" >> RELEASE_NOTES.md
- echo "" >> RELEASE_NOTES.md
- echo "TAR available at:" >> RELEASE_NOTES.md
- echo "$RELEASE_TAR_URL" >> RELEASE_NOTES.md
- cat CHANGELOG.md >> RELEASE_NOTES.md
artifacts:
paths:
- RELEASE_NOTES.md
create-gitlab-release:
image: registry.gitlab.com/gitlab-org/release-cli:latest
stage: release
......@@ -64,6 +105,8 @@ create-gitlab-release:
needs:
- job: build
artifacts: true
- job: release-notes
artifacts: true
variables:
# we just need the artifacts and don't need up-to-date source, so don't even fetch
GIT_STRATEGY: none
......@@ -73,8 +116,8 @@ create-gitlab-release:
- echo Creating GitLab release…
release:
tag_name: '$CI_COMMIT_TAG'
name: 'Card Templates $CI_COMMIT_TAG'
description: '$RELEASE_TAR is ready for download.'
name: 'Anki Card Templates $CI_COMMIT_TAG'
description: RELEASE_NOTES.md
assets:
links:
- name: '$RELEASE_TAR'
......
# git-cliff ~ default configuration file
# https://git-cliff.org/docs/configuration
#
# Lines starting with "#" are comments.
# Configuration options are organized into tables and keys.
# See documentation for more information on available options.
[changelog]
# template for the changelog header
header = ""
# template for the changelog body
# https://keats.github.io/tera/docs/#introduction
body = """
{% if version %}\
## Changelog for {{ version }}
{% else %}\
## [unreleased]
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}
### {{ group | striptags | trim | upper_first }}
{% for commit in commits %}
- {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
{% if commit.breaking %}[**breaking**] {% endif %}\
{{ commit.message | upper_first }}\
{% endfor %}
{% endfor %}\n
"""
# template for the changelog footer
footer = ""
# remove the leading and trailing s
trim = true
# postprocessors
postprocessors = []
[git]
# parse the commits based on https://www.conventionalcommits.org
conventional_commits = true
# filter out the commits that are not conventional
filter_unconventional = true
# process each line of a commit as an individual commit
split_commits = false
# regex for preprocessing the commit messages
commit_preprocessors = [
# Replace issue numbers
#{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))"},
# Check spelling of the commit with https://github.com/crate-ci/typos
# If the spelling is incorrect, it will be automatically fixed.
#{ pattern = '.*', replace_command = 'typos --write-changes -' },
]
# regex for parsing and grouping commits
commit_parsers = [
{ message = "^feat", group = "<!-- 0 -->🚀 Features" },
{ message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" },
{ message = "^doc", group = "<!-- 3 -->📚 Documentation" },
{ message = "^perf", group = "<!-- 4 -->⚡ Performance" },
{ message = "^refactor", group = "<!-- 2 -->🚜 Refactor" },
{ message = "^style", group = "<!-- 5 -->🎨 Styling" },
{ message = "^test", group = "<!-- 6 -->🧪 Testing" },
{ body = ".*security", group = "<!-- 8 -->🛡️ Security" },
{ message = "^revert", group = "<!-- 9 -->◀️ Revert" },
]
# protect breaking changes from being skipped due to matching a skipping commit_parser
protect_breaking_commits = false
# filter out the commits that are not matched by commit parsers
filter_commits = true
# regex for matching git tags
# tag_pattern = "v[0-9].*"
# regex for skipping tags
# skip_tags = ""
# regex for ignoring tags
# ignore_tags = ""
# sort the tags topologically
topo_order = false
# sort the commits inside sections by oldest/newest order
sort_commits = "oldest"
# limit the number of commits included in the changelog.
# limit_commits = 42
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment