Skip to content

Commit

Permalink
feat(github)!: support integration with GitHub repos (#363)
Browse files Browse the repository at this point in the history
See <https://git-cliff.org/docs/integration/github>

Squashed history:
* feat(github): support integration with GitHub repos
* fix(changelog): fix generation logic
* refactor(github): use verbose logging for errors
* fix(test): update tests accordingly to the render parameters
* feat(github): support deriving upstream URL from the repo
* docs(lib): update the description of the error module
* chore(github): add disclaimer for the github feature
* chore(config): filter the contributors in the github example
* fix(github): make GitHub login field optional
* chore(github): increase the logging verbosity for remote info
* refactor(git): reduce the log level for upstream remote
* feat(github): log the request error
* feat(args): add `--github-repo` argument
* feat(github): add caching for network requests
* feat(github): add progress bar for the network requests
* refactor(github): gate the implementation behind github feature flag
* fix(github): use the local cache for HTTP requests
* feat(github): set TCP keepalive value for HTTP client
* chore(cargo): create update-informer feature
* docs(website): add documentation about available features
* docs(website): reorder installation sections
* fix(config): skip serializing secret
* docs(website): add documentation about GitHub integration
* chore(example): update the style of GitHub config
* docs(website): add github example
* test(fixture): add test fixture for GitHub integration
* test(fixture): run the GitHub integration test
* fix(changelog): print header before fetching GitHub
* feat(github): allow using remote values without fetching GitHub
* chore(example): simplify Keep a Changelog example
* feat(example): add github-keepachangelog example
* chore(example): update the examples in default config
* chore(ci): test all features
* test(github): add unit tests for GitHub integration
* chore(ci): set upstream remote for tests
* chore(ci): show the current git status for test step
* chore(ci): skip git upstream test
* chore(ci): run tests without default features
* chore(ci): skip test with full name
* docs(website): add note about github-keepachangelog format
* chore(ci): skip the faulty git test for all test steps
* refactor(error): update the error type for logger
  • Loading branch information
orhun authored Dec 26, 2023
1 parent 89e4c72 commit 5238326
Show file tree
Hide file tree
Showing 43 changed files with 2,819 additions and 271 deletions.
51 changes: 51 additions & 0 deletions .github/fixtures/test-github-integration/cliff.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
[remote.github]
owner = "orhun"
repo = "git-cliff-readme-example"

[changelog]
# template for the changelog body
# https://keats.github.io/tera/docs/#introduction
body = """
## What's Changed
{%- if version %} in {{ version }}{%- endif -%}
{% for commit in commits %}
* {{ commit.message | split(pat="\n") | first | trim }}\
{% if commit.github.username %} by @{{ commit.github.username }}{%- endif -%}
{% if commit.github.pr_number %} in #{{ commit.github.pr_number }}{%- endif %}
{%- endfor -%}
{% if github.contributors | filter(attribute="is_first_time", value=true) | length != 0 %}
{% raw %}\n{% endraw -%}
## New Contributors
{%- endif %}\
{% for contributor in github.contributors | filter(attribute="is_first_time", value=true) %}
* @{{ contributor.username }} made their first contribution in #{{ contributor.pr_number }}
{%- endfor -%}
{% if version %}
{% if previous.version %}
**Full Changelog**: https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}/compare/{{ previous.version }}...{{ version }}
{% endif %}
{% else -%}
{% raw %}\n{% endraw %}
{% endif %}
"""
# remove the leading and trailing whitespace from the template
trim = true
# changelog footer
footer = """
<!-- generated by git-cliff -->
"""

[git]
# parse the commits based on https://www.conventionalcommits.org
conventional_commits = false
# 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 = [{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "" }]
# protect breaking changes from being skipped due to matching a skipping commit_parser
protect_breaking_commits = false
6 changes: 6 additions & 0 deletions .github/fixtures/test-github-integration/commit.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
set -e

git remote add origin https://github.com/orhun/git-cliff-readme-example
git pull origin master
git fetch --tags
18 changes: 18 additions & 0 deletions .github/fixtures/test-github-integration/expected.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
## What's Changed
* feat(config): support multiple file formats by @orhun
* feat(cache): use cache while fetching pages by @orhun

## What's Changed in v1.0.1
* refactor(parser): expose string functions by @orhun
* chore(release): add release script by @orhun

**Full Changelog**: https://github.com/orhun/git-cliff-readme-example/compare/v1.0.0...v1.0.1

## What's Changed in v1.0.0
* Initial commit by @orhun
* docs(project): add README.md by @orhun
* feat(parser): add ability to parse arrays by @orhun
* fix(args): rename help argument due to conflict by @orhun
* docs(example)!: add tested usage example by @orhun

<!-- generated by git-cliff -->
8 changes: 7 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,13 @@ jobs:
- name: Setup cargo-tarpaulin
uses: taiki-e/install-action@cargo-tarpaulin
- name: Run tests
run: cargo tarpaulin --out xml --verbose
run: |
cargo test --no-default-features \
-- --skip "repo::test::git_upstream_remote"
- name: Run tests
run: |
cargo tarpaulin --out xml --verbose --all-features \
-- --skip "repo::test::git_upstream_remote"
- name: Upload reports to codecov
uses: codecov/codecov-action@v3
with:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/test-fixtures.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ jobs:
matrix:
include:
- fixtures-name: new-fixture-template
- fixtures-name: test-github-integration
- fixtures-name: test-ignore-tags
- fixtures-name: test-topo-order
command: --latest
Expand Down
Loading

0 comments on commit 5238326

Please sign in to comment.