From e4ee224e16d2218933c1bdef6dc391a3a650f48b Mon Sep 17 00:00:00 2001
From: bo0tzz <git@bo0tzz.me>
Date: Thu, 14 Dec 2023 20:54:37 +0100
Subject: [PATCH] feat(ci): Automatic categories in generated release notes
 (#5684)

* feat(ci): Automatic categories in generated release notes

* ci: Enforce PR labels

* chore: Job name

* fix: Label names
---
 .github/release.yml                    | 26 ++++++++++++++++++++++++++
 .github/workflows/pr-require-label.yml | 13 +++++++++++++
 renovate.json                          |  3 ++-
 3 files changed, 41 insertions(+), 1 deletion(-)
 create mode 100644 .github/release.yml
 create mode 100644 .github/workflows/pr-require-label.yml

diff --git a/.github/release.yml b/.github/release.yml
new file mode 100644
index 0000000000..a961339c9f
--- /dev/null
+++ b/.github/release.yml
@@ -0,0 +1,26 @@
+changelog:
+  categories:
+    - title: Breaking Changes 🛠
+      labels:
+        - breaking-change
+    - title: Server
+      labels:
+        - 🗄️server
+    - title: Mobile
+      labels:
+        - 📱mobile
+    - title: Web
+      labels:
+        - 🖥️web
+    - title: Machine Learning
+      labels:
+        - 🧠machine-learning
+    - title: CLI
+      labels:
+        - cli
+    - title: Documentation
+      labels:
+        - documentation
+    - title: Dependency updates
+      labels:
+        - renovate
diff --git a/.github/workflows/pr-require-label.yml b/.github/workflows/pr-require-label.yml
new file mode 100644
index 0000000000..6bf54eacf1
--- /dev/null
+++ b/.github/workflows/pr-require-label.yml
@@ -0,0 +1,13 @@
+name: Enforce PR labels
+
+on:
+  pull_request:
+    types: [labeled, unlabeled, opened, edited, synchronize]
+jobs:
+  enforce-label:
+    name: Enforce label
+    runs-on: ubuntu-latest
+    steps:
+    - if: toJson(github.event.pull_request.labels) == '[]'
+      run: exit 1
+
diff --git a/renovate.json b/renovate.json
index 928d6783a1..987f0198db 100644
--- a/renovate.json
+++ b/renovate.json
@@ -71,5 +71,6 @@
     "vector_map_tiles",
     "flutter_map",
     "flutter_map_heatmap"
-  ]
+  ],
+  "labels": ["renovate"]
 }