Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions RELEASING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Release Guide

This document outlines the step-by-step release process for **GitHub Stats**.

---

## 馃搵 Prerequisites

- **Git & GitHub CLI (`gh`)**: Authenticated with release permissions (`gh auth login`).
- **JDK 21**: Configured locally (Temurin recommended).
- **Clean Working Tree**: Ensure all feature branches are merged and CI is passing on `main`.

---

## 馃殌 Release Process

### Step 1: Create a Release Branch
Create a new branch for the release from `main`:
```bash
git checkout main
git pull origin main
git checkout -b release/vX.Y
```
*(Replace `X.Y` with the target release version, e.g. `1.10`)*

---

### Step 2: Bump Application Version
Update the `version` property in [`build.gradle.kts`](build.gradle.kts):
```kotlin
group = "dev.hossain.githubstats"
version = "X.Y" // e.g. "1.10"
```

---

### Step 3: Run Pre-Release Verification
Run the full test suite, linter, and coverage reports locally:
```bash
# Format and lint check
./gradlew formatKotlin
IS_GITHUB_CI=true ./gradlew lintKotlin test koverHtmlReport
```
Ensure all tests pass and there are zero lint violations.

---

### Step 4: Submit & Merge Release PR
Commit the version bump and open a pull request:
```bash
git add build.gradle.kts
git commit -m "Bump version to X.Y for release"
git push -u origin release/vX.Y
gh pr create --title "Release vX.Y" --body "Bump version to X.Y for release."
```
Once CI passes, review and merge the PR into `main`.

---

### Step 5: Create & Publish GitHub Release
Once merged to `main`, pull the latest commit and publish the release with generated release notes:

```bash
git checkout main
git pull origin main

# Create and publish the GitHub release with git tag
gh release create vX.Y --title "Release vX.Y" --generate-notes
```

Alternatively, publish via the GitHub Web UI:
1. Navigate to [GitHub Releases](https://github.com/hossain-khan/github-stats/releases).
2. Click **Draft a new release**.
3. Choose or create tag `vX.Y`.
4. Click **Generate release notes** and curate the highlights.
5. Click **Publish release**.

---

### Step 6: Post-Release Verification

- **GitHub Pages / Dokka API Docs**: The [static-docs.yml](.github/workflows/static-docs.yml) workflow will automatically build and publish updated Dokka documentation to [GitHub Pages](https://hossain-khan.github.io/github-stats/).
- **GitHub Actions CI**: Verify that all automated workflows pass on the `main` branch.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ plugins {
}

group = "dev.hossain.githubstats"
version = "1.9"
version = "1.10"

repositories {
mavenCentral()
Expand Down
Loading