From 73a348264ed44be82b217f237dea1448e06e11c0 Mon Sep 17 00:00:00 2001 From: magine Date: Tue, 2 Apr 2024 15:08:29 +0800 Subject: [PATCH] ci: use cliff to generate release notes (#571) * Use cliff to generate release notes * Fix typos --- .github/workflows/auto-release.yml | 18 +++- cliff.toml | 100 +++++++++++++++++++ crates/node/bin/rings.rs | 2 +- crates/node/src/backend/snark/browser.rs | 6 +- crates/node/src/provider/browser/provider.rs | 2 +- crates/node/src/provider/mod.rs | 2 +- typos.toml | 2 + 7 files changed, 122 insertions(+), 10 deletions(-) create mode 100644 cliff.toml create mode 100644 typos.toml diff --git a/.github/workflows/auto-release.yml b/.github/workflows/auto-release.yml index 734a1455d..c70788d53 100644 --- a/.github/workflows/auto-release.yml +++ b/.github/workflows/auto-release.yml @@ -231,16 +231,26 @@ jobs: with: fetch-depth: 0 - - uses: actions/download-artifact@v2 + - name: Generate changelog + uses: orhun/git-cliff-action@v3 + id: git-cliff + with: + config: cliff.toml + args: -vv --latest --strip header + env: + OUTPUT: CHANGES.md + + - uses: actions/download-artifact@v3 - name: Display fetched artifacts run: ls -R - - uses: "marvinpinto/action-automatic-releases@latest" + - uses: softprops/action-gh-release@v2.0.4 name: Emit a Github Release with: - repo_token: "${{ secrets.GITHUB_TOKEN }}" - automatic_release_tag: ${{ needs.gen_version.outputs.version }} + token: "${{ secrets.GITHUB_TOKEN }}" + body: "${{ steps.git-cliff.outputs.content }}" + tag_name: ${{ needs.gen_version.outputs.version }} prerelease: ${{ needs.gen_version.outputs.version == 'prerelease' }} title: ${{ needs.gen_version.outputs.version }} files: | diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 000000000..76d1a06c3 --- /dev/null +++ b/cliff.toml @@ -0,0 +1,100 @@ +# git-cliff ~ configuration file +# https://git-cliff.org/docs/configuration + +[changelog] +# changelog header +header = """ +# Changelog\n +All notable changes to this project will be documented in this file. See [conventional commits](https://www.conventionalcommits.org/) for commit guidelines.\n +""" +# template for the changelog body +# https://keats.github.io/tera/docs/#introduction +body = """ +--- +{% if version %}\ + {% if previous.version %}\ + ## [{{ version | trim_start_matches(pat="v") }}]($REPO/compare/{{ previous.version }}..{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }} + {% else %}\ + ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} + {% endif %}\ +{% else %}\ + ## [unreleased] +{% endif %}\ +{% for group, commits in commits | group_by(attribute="group") %} + ### {{ group | striptags | trim | upper_first }} + {% for commit in commits + | filter(attribute="scope") + | sort(attribute="scope") %} + - **({{commit.scope}})**{% if commit.breaking %} [**breaking**]{% endif %} \ + {{ commit.message|trim }} - ([{{ commit.id | truncate(length=7, end="") }}]($REPO/commit/{{ commit.id }})) - {{ commit.author.name }} + {%- endfor -%} + {% raw %}\n{% endraw %}\ + {%- for commit in commits %} + {%- if commit.scope -%} + {% else -%} + - {% if commit.breaking %} [**breaking**]{% endif %}\ + {{ commit.message|trim }} - ([{{ commit.id | truncate(length=7, end="") }}]($REPO/commit/{{ commit.id }})) - {{ commit.author.name }} + {% endif -%} + {% endfor -%} +{% endfor %}\n +""" +# template for the changelog footer +footer = """ + +""" +# remove the leading and trailing whitespace from the templates +trim = true +# postprocessors +postprocessors = [ + # { pattern = '', replace = "https://github.com/orhun/git-cliff" }, # replace repository URL +] + +[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}](/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 = "Features" }, + { message = "^fix", group = "Bug Fixes" }, + { message = "^refactor", group = "Refactor" }, + { message = "^doc", group = "Documentation" }, + { message = "^perf", group = "Performance" }, + { message = "^style", group = "Styling" }, + { message = "^test", group = "Testing" }, + { message = "^chore|^ci", group = "Miscellaneous Tasks" }, + { body = ".*security", group = "Security" }, + { message = "^revert", group = "Revert" }, + { message = ".*", group = "Other" }, + { message = "^chore\\(release\\): prepare for", skip = true }, + { message = "^chore\\(deps.*\\)", skip = true }, + { message = "^chore\\(pr\\)", skip = true }, + { message = "^chore\\(pull\\)", skip = true }, +] +# 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 = false +# 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 diff --git a/crates/node/bin/rings.rs b/crates/node/bin/rings.rs index 4e29822e1..a3915a86c 100644 --- a/crates/node/bin/rings.rs +++ b/crates/node/bin/rings.rs @@ -151,7 +151,7 @@ struct RunCommand { #[arg( long, default_value = "200000000", - help = "Storage capcity. If not provider, use storage.capacity in config file or 200000000", + help = "Storage capacity. If not provider, use storage.capacity in config file or 200000000", env )] pub storage_capacity: Option, diff --git a/crates/node/src/backend/snark/browser.rs b/crates/node/src/backend/snark/browser.rs index dee57e759..b3cc9fe1c 100644 --- a/crates/node/src/backend/snark/browser.rs +++ b/crates/node/src/backend/snark/browser.rs @@ -286,12 +286,12 @@ impl Input { let data: Vec<(String, Vec)> = input .into_iter() .map(|s| { - let lst = js_sys::Array::from(&s); - let p = lst + let last = js_sys::Array::from(&s); + let p = last .get(0) .as_string() .expect("first argument should be string like"); - let v: Vec = js_sys::Array::from(&lst.get(1)) + let v: Vec = js_sys::Array::from(&last.get(1)) .into_iter() .map(|p| { bigint_to_field(p.into(), field.clone()) diff --git a/crates/node/src/provider/browser/provider.rs b/crates/node/src/provider/browser/provider.rs index 034e0ac68..97a03dc5e 100644 --- a/crates/node/src/provider/browser/provider.rs +++ b/crates/node/src/provider/browser/provider.rs @@ -73,7 +73,7 @@ impl Provider { /// Ice_servers should obey forrmat: "[turn|strun]://
:;..." /// Account is hex string /// Account should format as same as account_type declared - /// Account_type is lowercase string, possible input are: `eip191`, `ed25519`, `bip137`, for more imformation, + /// Account_type is lowercase string, possible input are: `eip191`, `ed25519`, `bip137`, for more information, /// please check [rings_core::ecc] /// Signer should be `async function (proof: string): Promise` /// Signer should function as same as account_type declared, Eg: eip191 or secp256k1 or ed25519. diff --git a/crates/node/src/provider/mod.rs b/crates/node/src/provider/mod.rs index 4bf4cdf09..49907000b 100644 --- a/crates/node/src/provider/mod.rs +++ b/crates/node/src/provider/mod.rs @@ -93,7 +93,7 @@ impl Provider { /// Ice_servers should obey forrmat: "[turn|strun]://
:;..." /// Account is hex string /// Account should format as same as account_type declared - /// Account_type is lowercase string, possible input are: `eip191`, `ed25519`, `bip137`, for more imformation, + /// Account_type is lowercase string, possible input are: `eip191`, `ed25519`, `bip137`, for more information, /// please check [rings_core::ecc] /// Signer should accept a String and returns bytes. /// Signer should function as same as account_type declared, Eg: eip191 or secp256k1 or ed25519. diff --git a/typos.toml b/typos.toml new file mode 100644 index 000000000..381e1dedf --- /dev/null +++ b/typos.toml @@ -0,0 +1,2 @@ +[type.rust] +extend-ignore-re = ["[wW]s", "WS"]