From 81830bb25605636f57610698e422e1b34c2bdfea Mon Sep 17 00:00:00 2001 From: Agustin Borgna Date: Sun, 17 Sep 2023 06:19:38 +0100 Subject: [PATCH] chore: Setup release-plz --- .github/workflows/release-plz.yml | 28 ++++++++++++ RELEASES.md => CHANGELOG.md | 0 README.md | 4 +- cliff.toml | 73 +++++++++++++++++++++++++++++++ release-plz.toml | 2 + 5 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/release-plz.yml rename RELEASES.md => CHANGELOG.md (100%) create mode 100644 cliff.toml create mode 100644 release-plz.toml diff --git a/.github/workflows/release-plz.yml b/.github/workflows/release-plz.yml new file mode 100644 index 0000000..65ea1f9 --- /dev/null +++ b/.github/workflows/release-plz.yml @@ -0,0 +1,28 @@ +name: Release-plz + +permissions: + pull-requests: write + contents: write + +on: + push: + branches: + - main + +jobs: + release-plz: + name: Release-plz + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + - name: Run release-plz + uses: MarcoIeni/release-plz-action@v0.5 + with: + command: release-pr + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/RELEASES.md b/CHANGELOG.md similarity index 100% rename from RELEASES.md rename to CHANGELOG.md diff --git a/README.md b/README.md index 38f788b..79edbff 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Serializable Rust definition for circuits and operations of the ## Recent Changes -See [RELEASES][] for a list of changes. The minimum supported rust +See [CHANGELOG][] for a list of changes. The minimum supported rust version will only change on major releases. ## License @@ -27,4 +27,4 @@ This project is licensed under Apache License, Version 2.0 ([LICENSE][] or http: [crates]: https://img.shields.io/crates/v/tket-json-rs [LICENSE]: LICENCE [msrv]: https://img.shields.io/badge/rust-1.70.0%2B-blue.svg?maxAge=3600 - [RELEASES]: RELEASES.rst + [CHANGELOG]: CHANGELOG.md diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 0000000..b2b0a56 --- /dev/null +++ b/cliff.toml @@ -0,0 +1,73 @@ +# 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] +# changelog header +header = """ +# Release notes\n +""" +# template for the changelog body +# https://tera.netlify.app/docs +body = """ +{% if version %}\ + ## {{ version }} ({{ timestamp | date(format="%Y-%m-%d") }}) +{% else %}\ + ## Unreleased (XXXX-XX-XX) +{% endif %}\ +{% for group, commits in commits | group_by(attribute="group") %} + ### {{ group | upper_first }} + {% for commit in commits %} + - {% if commit.breaking %}[**breaking**] {% endif %}{{ commit.message | upper_first }}\ + {% endfor %} +{% endfor %}\n +""" +# remove the leading and trailing whitespace from the template +trim = true +# changelog footer +footer = "" + +[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 = [ + { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](https://github.com/CQCL/portgraph/issues/${2}))"}, # replace issue numbers +] +# regex for parsing and grouping commits +commit_parsers = [ + { message = "^feat", group = "Features" }, + { message = "^fix", group = "Bug Fixes" }, + { message = "^docs", group = "Documentation" }, + { message = "^style", group = "Styling" }, + { message = "^refactor", group = "Refactor" }, + { message = "^perf", group = "Performance" }, + { message = "^test", group = "Testing" }, + { message = "^chore\\(release\\): prepare for", skip = true }, + { message = "^chore", group = "Miscellaneous Tasks", skip = true }, + { message = "^revert", group = "Reverted changes", skip = true }, + { message = "^ci", group = "CI", skip = true }, +] +# protect breaking changes from being skipped due to matching a skipping commit_parser +protect_breaking_commits = true +# filter out the commits that are not matched by commit parsers +filter_commits = false +# glob pattern for matching git tags +tag_pattern = "v[0-9.]*" +# regex for skipping tags +skip_tags = "v0.1.0-beta.1" +# regex for ignoring tags +ignore_tags = "" +# sort the tags topologically +topo_order = false +# sort the commits inside sections by oldest-first/newest-first +sort_commits = "oldest" +# limit the number of commits included in the changelog. +# limit_commits = 42 diff --git a/release-plz.toml b/release-plz.toml new file mode 100644 index 0000000..0d7dd7e --- /dev/null +++ b/release-plz.toml @@ -0,0 +1,2 @@ +[workspace] +changelog_config = "cliff.toml" # use a custom git-cliff configuration