cd /news/developer-tools/auto-versioning-changelog-generation… · home topics developer-tools article
[ARTICLE · art-12428] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Auto versioning + changelog generation using Github Action

This article explains how to set up an automated versioning and changelog generation system using GitHub Actions and the semantic-release tool. The system works by analyzing commit messages that follow the Conventional Commits format (feat, fix, breaking change) to automatically determine version bumps, generate changelogs, create git tags, and publish GitHub releases. The guide provides step-by-step instructions for configuring the necessary files, including `.releaserc.json` and a GitHub Actions workflow file.

read2 min views29 publishedMay 23, 2026

Auto versioning + changelog generation is a very real production pattern used in open-source and SaaS teams to avoid messy release notes and manual tagging. We’ll build a clean system using:

commit → push → GitHub Action
↓
analyze commits
↓
bump version (patch/minor/major)
↓
generate changelog
↓
create git tag
↓
create GitHub release
---
We’ll use:
👉 **semantic-release** (industry standard)
``` bash id="inst1"
npm install --save-dev semantic-release @semantic-release/changelog @semantic-release/git @semantic-release/github
Your commits MUST follow this format:
``` bash id="c1"
feat: add user login system
### Fix (patch version bump)
``` bash id="c2"
fix: resolve navbar bug on mobile
``` bash id="c3"
feat!: redesign API structure
or
``` bash id="c4"
BREAKING CHANGE: remove old auth system
.releaserc.json
``` json id="r1"
{
"branches": ["main"],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"@semantic-release/github",
[
"@semantic-release/git",
{
"assets": ["package.json", "CHANGELOG.md"],
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}
]
]
}
---
``` bash id="ch1"
touch CHANGELOG.md
Start empty:
``` md id="ch2"
All notable changes will be documented here.
---
## 📁 `.github/workflows/release.yml`
``` yaml id="w1"
name: Auto Version & Changelog
on:
push:
branches:
- main
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm install
- name: Run semantic release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: npx semantic-release
When you push to main
:
Decide version bump:
Generate changelog
Create Git tag
Create GitHub Release
Update CHANGELOG.md
``` md id="log1"
GitHub will automatically create:
``` plaintext id="rel1"
v1.2.0 - Production Release
Features:
Fixes:
Make sure this exists:
``` plaintext id="sec1"
GITHUB_TOKEN (auto provided by GitHub Actions)
No extra setup required.
---
### Developer flow:
``` plaintext id="flow1"
git commit -m "feat: add dashboard UI"
git push origin main
feat
)``` yaml id="npm1"
``` yaml id="slack1"
``` json id="branch1"
"branches": ["main", "next"]
---
## 🟣 Changelog formatting customization
You can group commits like:
* Features
* Fixes
* Performance
* Breaking changes
---
### ❌ Not using conventional commits
→ versioning won’t work properly
### ❌ Pushing messy commit messages
``` bash id="bad1"
fix stuff
update
→ release history breaks
``` plaintext id="final1"
Commit (feat/fix/breaking)
↓
GitHub Action triggers
↓
semantic-release analyzes commits
↓
bumps version automatically
↓
updates CHANGELOG.md
↓
creates git tag + GitHub release
---
You now have:
* 🤖 Automated versioning
* 📜 Auto changelog generation
* 🏷️ Git tags + GitHub releases
* 🚀 CI/CD-ready release pipeline
── more in #developer-tools 4 stories · sorted by recency
── more on @github action 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/auto-versioning-chan…] indexed:0 read:2min 2026-05-23 ·