You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: RELEASING.md
+27-3Lines changed: 27 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,11 +5,11 @@ This document explains how to create releases for the extra-ktor-plugins project
5
5
## Quick Start - How to Release
6
6
7
7
### 🔄 Automatic Snapshots
8
-
**No action needed!** Snapshots are created automatically:
8
+
**No action needed!** Snapshots are built and staged locally:
9
9
- Push commits to `main` branch
10
10
- Wait for `build-main.yml` to succeed
11
11
-`release.yml` automatically triggers and creates a snapshot (e.g., `2.3.0-SNAPSHOT`)
12
-
- Artifacts published to Maven Central staging repository
12
+
- Artifacts are staged locally but **not published to Maven Central**
13
13
14
14
### 🚀 Production Release
15
15
1. Go to **Actions** tab in GitHub
@@ -26,6 +26,16 @@ This document explains how to create releases for the extra-ktor-plugins project
26
26
### 📦 Manual Snapshot (Optional)
27
27
Same as production release, but select **"snapshot"** from the dropdown.
28
28
29
+
### Snapshot vs Release Details
30
+
31
+
The `release.yml` workflow decides whether to perform a snapshot or a release based on the type of trigger and the `release.mode` property:
32
+
33
+
-**Automatic triggers** (e.g., after successful `build-main.yml`) default to `release.mode=snapshot`, producing snapshot versions.
34
+
-**Manual triggers** allow selection between `snapshot` and `release` modes.
35
+
- The `release.mode` property controls version suffixes and deployment behavior:
36
+
-`snapshot` mode appends `-SNAPSHOT` and stages artifacts locally without publishing to Maven Central.
37
+
-`release` mode produces clean versions and publishes artifacts to Maven Central with GitHub release creation.
38
+
29
39
---
30
40
31
41
## How It Works
@@ -101,6 +111,7 @@ snapshotCreator { version, position ->
101
111
- Publishes to Maven Central staging repository
102
112
- No GitHub release created
103
113
- No tags created
114
+
- Snapshots are released to ossrh repository (maven central doesn't support snapshots)
104
115
105
116
**Release Mode (`jreleaserFullRelease`):**
106
117
- Publishes to Maven Central (production)
@@ -109,6 +120,19 @@ snapshotCreator { version, position ->
109
120
110
121
**Configuration:** Located in `build.gradle.kts` under `jreleaser` block
111
122
123
+
##### Snapshot Publishing (optional)
124
+
125
+
To enable snapshot publishing with JReleaser, you can add a snapshot deployer in Gradle configuration:
126
+
127
+
```kotlin
128
+
jreleaser {
129
+
snapshot {
130
+
active = org.jreleaser.model.Active.SNAPSHOT
131
+
// configure snapshot deployer details here
132
+
}
133
+
}
134
+
```
135
+
112
136
#### 4. **Build Main Workflow** (`.github/workflows/build-main.yml`)
113
137
**Role:** Quality gate for automatic snapshots
114
138
@@ -155,7 +179,7 @@ snapshotCreator { version, position ->
155
179
156
180
### Conventional Commits Integration
157
181
158
-
The system relies on conventional commit messages for version calculation:
182
+
The system relies on conventional commit messages for version calculation and now includes merge commits in the changelog generation using the settings `skipMergeCommits=false` and `includeUncategorized=true`. Non-conventional commit subjects such as merge commits will appear under the "Uncategorized" section of the changelog, while CI-related commits are filtered out to keep the changelog relevant and clean.
"This project provides a suite of feature-rich, efficient, and highly customizable plugins for your Ktor Server or Client, crafted in Kotlin, available for multiplatform.",
253
-
)
254
-
longDescription.set(
255
-
"A comprehensive collection of Ktor plugins including rate limiting, Kafka integration, circuit breaker patterns, and distributed task scheduling. Built with Kotlin Multiplatform support for JVM, Native, and JS platforms.",
256
-
)
257
-
authors.add("Ido Flax")
258
-
license.set("Apache-2.0")
259
-
copyright.set("Copyright (c) 2023 Ido Flax")
257
+
name ="${rootProject.name}: ${project.name}"
258
+
description =
259
+
"This project provides a suite of feature-rich, efficient, and highly customizable plugins for your Ktor Server or Client, crafted in Kotlin, available for multiplatform."
260
+
261
+
longDescription =
262
+
"A comprehensive collection of Ktor plugins including rate limiting, Kafka integration, circuit breaker patterns, and distributed task scheduling. Built with Kotlin Multiplatform support for JVM, Native, and JS platforms."
0 commit comments