From 5f4dbc3100e29b8b4f9acb4911d946f2a9d173e4 Mon Sep 17 00:00:00 2001
From: Chris Hennick <hennickc@amazon.com>
Date: Mon, 22 Apr 2024 19:03:45 -0700
Subject: [PATCH] build: configure release-plz

---
 .github/dependabot.yml    |  4 ++--
 .github/workflows/ci.yaml |  8 --------
 cliff.toml                |  4 ++--
 release-plz.toml          | 25 +++++++++++++++++++++++++
 4 files changed, 29 insertions(+), 12 deletions(-)
 create mode 100644 release-plz.toml

diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 347e19a0..4d493b8a 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -6,8 +6,8 @@ updates:
       interval: daily
     open-pull-requests-limit: 10
     commit-message:
-      prefix: "chore"
-      prefix-development: "test"
+      prefix: "chore(deps)"
+      prefix-development: "test(deps)"
       include: "scope"
   - package-ecosystem: "github-actions" # See documentation for possible values
     directory: "/" # Location of package manifests
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index b7119593..8b111765 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -268,14 +268,6 @@ jobs:
 
   release-plz:
     name: Release-plz
-    needs:
-      - build_and_test
-      - clippy
-      - check_fmt_and_docs
-      - fuzz_read
-      - fuzz_read_with_no_features
-      - fuzz_write
-      - fuzz_write_with_no_features
     runs-on: ubuntu-latest
     steps:
       - name: Checkout repository
diff --git a/cliff.toml b/cliff.toml
index 464fdc01..753d01cf 100644
--- a/cliff.toml
+++ b/cliff.toml
@@ -65,7 +65,7 @@ commit_parsers = [
   { message = "^test", skip = true },
   { message = "^build", skip = true },
   { message = "^ci", skip = true },
-  { message = "^chore\\(release\\): prepare for", skip = true },
+  { message = "^chore\\(release\\)", skip = true },
   { message = "^chore\\(deps.*\\)", skip = true },
   { message = "^chore\\(pr\\)", skip = true },
   { message = "^chore\\(pull\\)", skip = true },
@@ -74,7 +74,7 @@ commit_parsers = [
   { message = "^revert", group = "<!-- 9 -->◀️ Revert" },
 ]
 # protect breaking changes from being skipped due to matching a skipping commit_parser
-protect_breaking_commits = false
+protect_breaking_commits = true
 # filter out the commits that are not matched by commit parsers
 filter_commits = false
 # regex for matching git tags
diff --git a/release-plz.toml b/release-plz.toml
new file mode 100644
index 00000000..e471eee6
--- /dev/null
+++ b/release-plz.toml
@@ -0,0 +1,25 @@
+[workspace]
+dependencies_update = true # update dependencies with `cargo update`
+pr_labels = ["release"] # add the `release` label to the release Pull Request
+release_commits = "^(feat|fix|perf|refactor):" # prepare release only if at least one commit matches a regex
+git_release_type = "auto"
+
+[changelog]
+protect_breaking_commits = true
+commit_parsers = [
+    { message = "^feat", group = "<!-- 0 -->🚀 Features" },
+    { message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" },
+    { message = "^perf", group = "<!-- 4 -->⚡ Performance" },
+    { message = "^refactor", group = "<!-- 2 -->🚜 Refactor" },
+    { message = "^style", skip = true },
+    { message = "^test", skip = true },
+    { message = "^build", skip = true },
+    { message = "^ci", skip = true },
+    { message = "^chore\\(release\\)", skip = true },
+    { message = "^chore\\(deps.*\\)", skip = true },
+    { message = "^chore\\(pr\\)", skip = true },
+    { message = "^chore\\(pull\\)", skip = true },
+    { message = "^chore", group = "<!-- 7 -->⚙️ Miscellaneous Tasks" },
+    { body = ".*security", group = "<!-- 8 -->🛡️ Security" },
+    { message = "^revert", group = "<!-- 9 -->◀️ Revert" },
+]
\ No newline at end of file