From db0854359073f0b0a49ab2674810cda0b94c7afc Mon Sep 17 00:00:00 2001 From: Mehul <65443164+infiniteregrets@users.noreply.github.com> Date: Tue, 5 Nov 2024 21:16:35 -0500 Subject: [PATCH] chore: add release action (#45) --- .github/workflows/release.yml | 30 +++++++++++++ CHANGELOG.md | 42 ++++++++++++++++++ cliff.toml | 83 +++++++++++++++++++++++++++++++++++ 3 files changed, 155 insertions(+) create mode 100644 .github/workflows/release.yml create mode 100644 CHANGELOG.md create mode 100644 cliff.toml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..1b42218 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,30 @@ +name: release +on: + push: + tags: ["[0-9]+.[0-9]+.[0-9]+*"] + workflow_dispatch: +jobs: + create_release: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: checkout + uses: actions/checkout@v4 + - name: version + id: version + uses: SebRollen/toml-action@v1.2.0 + with: + file: Cargo.toml + field: package.version + - uses: mindsers/changelog-reader-action@v2 + id: changelog_reader + with: + version: ${{ steps.version.outputs.value }} + - name: download artifacts + uses: actions/download-artifact@v4 + - name: create release + uses: softprops/action-gh-release@v2 + with: + name: ${{ steps.version.outputs.value }} + body: ${{ steps.changelog_reader.outputs.changes }} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..45d0f8c --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +## [0.1.0] - 2024-11-06 + +### Features + +- Implement `BasinService/{ListStreams, GetBasinConfig}` ([#3](https://github.com/s2-streamstore/s2-cli/issues/3)) +- Implement `BasinService/{CreateStream, GetStreamConfig}` ([#8](https://github.com/s2-streamstore/s2-cli/issues/8)) +- Implement `AccountService/{ListBasins, DeleteBasin}` ([#10](https://github.com/s2-streamstore/s2-cli/issues/10)) +- Implement `BasinService` ([#12](https://github.com/s2-streamstore/s2-cli/issues/12)) +- Add request timeout ([#14](https://github.com/s2-streamstore/s2-cli/issues/14)) +- Display impl for types::BasinState ([#18](https://github.com/s2-streamstore/s2-cli/issues/18)) +- Implement `StreamService` (complete) ([#16](https://github.com/s2-streamstore/s2-cli/issues/16)) +- Implement `AppendRecordStream` with batching support ([#24](https://github.com/s2-streamstore/s2-cli/issues/24)) +- Enable tls config and make connection uri depend on env ([#25](https://github.com/s2-streamstore/s2-cli/issues/25)) +- Doc reuse ([#32](https://github.com/s2-streamstore/s2-cli/issues/32)) +- Support for overriding user-agent ([#33](https://github.com/s2-streamstore/s2-cli/issues/33)) +- Sync rpc - sdk wrapper docs ([#34](https://github.com/s2-streamstore/s2-cli/issues/34)) + +### Bug Fixes + +- Use usize for ListBasins ([#15](https://github.com/s2-streamstore/s2-cli/issues/15)) +- Make all errors public ([#20](https://github.com/s2-streamstore/s2-cli/issues/20)) + +### Miscellaneous Tasks + +- Update proto submodule ([#7](https://github.com/s2-streamstore/s2-cli/issues/7)) +- Replace url with http::uri::Uri ([#6](https://github.com/s2-streamstore/s2-cli/issues/6)) +- Update `HAS_NO_SIDE_EFFECTS` to `IDEMPOTENCY_LEVEL` ([#11](https://github.com/s2-streamstore/s2-cli/issues/11)) +- FromStr impl to convert str to StorageClass enum ([#13](https://github.com/s2-streamstore/s2-cli/issues/13)) +- Move `get_basin_config`, `reconfigure_basin` to `AccountService` ([#17](https://github.com/s2-streamstore/s2-cli/issues/17)) +- Remove usage of deprecated `tonic_build` method ([#21](https://github.com/s2-streamstore/s2-cli/issues/21)) +- Add+feature-gate serde Serialize/Deserialize derives ([#22](https://github.com/s2-streamstore/s2-cli/issues/22)) +- Deps +- Updated repo for proto submodule ([#38](https://github.com/s2-streamstore/s2-cli/issues/38)) +- Http2 adaptive window [S2-412] ([#41](https://github.com/s2-streamstore/s2-cli/issues/41)) +- Add CI action ([#44](https://github.com/s2-streamstore/s2-cli/issues/44)) +- Add release action + + diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 0000000..addae57 --- /dev/null +++ b/cliff.toml @@ -0,0 +1,83 @@ +# 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 = """ +# Changelog\n +All notable changes to this project will be documented in this file.\n +""" +# template for the changelog body +# https://keats.github.io/tera/docs/#introduction +body = """ +{% if version %}\ + ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} +{% 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 = [ + { pattern = '', replace = "https://github.com/s2-streamstore/s2-cli" }, # replace repository URL +] +# render body even when there are no releases to process +# render_always = true +# output file path +# output = "test.md" + +[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 = "^doc", group = " Documentation" }, + { message = "^perf", group = " Performance" }, + { message = "^refactor", group = " Refactor" }, + { message = "^style", group = " Styling" }, + { message = "^test", group = " Testing" }, + { message = "^chore\\(release\\): prepare for", skip = true }, + { message = "^chore\\(deps.*\\)", skip = true }, + { message = "^chore\\(pr\\)", skip = true }, + { message = "^chore\\(pull\\)", skip = true }, + { message = "^chore|^ci", group = " Miscellaneous Tasks" }, + { body = ".*security", group = " Security" }, + { message = "^revert", group = " Revert" }, +] +# filter out the commits that are not matched by commit parsers +filter_commits = false +# sort the tags topologically +topo_order = false +# sort the commits inside sections by oldest/newest order +sort_commits = "oldest"