Feature/Enhanced release notes #2

Merged
jusemon merged 1 commit from feature/enhanced-release-notes into main 2025-11-25 17:33:33 -05:00
Owner

Enhance Release Notes with Template-Based System

Summary

This PR enhances the release tagging system by introducing a template-based approach for generating detailed release notes. Instead of simple "Release X.Y.Z" messages, tags now include comprehensive information about the release including changelog, Docker image references, commit details, and deployment instructions.

Changes

📝 New Release Template (.forgejo/release-template.md)

  • Created a reusable Markdown template for release notes
  • Uses placeholder variables for dynamic content
  • Includes structured sections:
    • Release metadata (version, Docker image, commit, build date, author)
    • Changelog (commits since last release)
    • Docker pull commands
    • Deployment instructions

🔄 Enhanced CI Workflow (.forgejo/workflows/ci.yaml)

  • New Step: Generate Release Notes

    • Extracts commit information since last release
    • Gathers build metadata (date, author, commit hash)
    • Reads template file and replaces placeholders
    • Generates comprehensive release message
  • Updated: Create Git Tag

    • Now uses the generated release notes from template
    • Tags include full release documentation

Benefits

📋 Rich Release Information

Each release tag now includes:

  • Version number and Docker image reference
  • Full and short commit hashes
  • Build timestamp (UTC)
  • Commit author information
  • Automatic changelog (commits since last release)
  • Ready-to-use Docker pull commands

🛠️ Maintainability

  • Template-based: Release format can be updated without touching workflow code
  • Separation of concerns: Template logic separated from CI logic
  • Version controlled: Template changes tracked in git
  • Easy customization: Edit template to change release note format

📖 Better Documentation

  • Release tags serve as complete release documentation
  • Easy to see what changed between versions
  • Quick reference for deployment commands
  • Professional release notes format

Example Release Tag

After this PR, release tags will look like:

Release 0.1.2

Docker Image: git.jusemon.com/jusemon/threejs-test:0.1.2
Commit: abc1234 (abc1234def5678...)
Build Date: 2025-11-25 23:00:00 UTC
Author: Developer Name <dev@example.com>

## Changes

- Fix collision detection bug (def5678)
- Add new game feature (ghi9012)

## Docker Image

docker pull git.jusemon.com/jusemon/threejs-test:0.1.2


## Deployment

The image is also available as `latest`:

docker pull git.jusemon.com/jusemon/threejs-test:latest

Technical Details

  • Template uses sed for placeholder replacement
  • Changelog automatically generated from git log
  • Handles first release (shows last 10 commits if no previous tag)
  • Template validation (fails if template file missing)
  • Maintains backward compatibility with existing workflow

Testing

The workflow will:

  1. Generate release notes from template on next merge to main
  2. Create tag with detailed information
  3. Include all metadata and changelog
# Enhance Release Notes with Template-Based System ## Summary This PR enhances the release tagging system by introducing a template-based approach for generating detailed release notes. Instead of simple "Release X.Y.Z" messages, tags now include comprehensive information about the release including changelog, Docker image references, commit details, and deployment instructions. ## Changes ### 📝 New Release Template (`.forgejo/release-template.md`) - Created a reusable Markdown template for release notes - Uses placeholder variables for dynamic content - Includes structured sections: - Release metadata (version, Docker image, commit, build date, author) - Changelog (commits since last release) - Docker pull commands - Deployment instructions ### 🔄 Enhanced CI Workflow (`.forgejo/workflows/ci.yaml`) - **New Step: Generate Release Notes** - Extracts commit information since last release - Gathers build metadata (date, author, commit hash) - Reads template file and replaces placeholders - Generates comprehensive release message - **Updated: Create Git Tag** - Now uses the generated release notes from template - Tags include full release documentation ## Benefits ### 📋 Rich Release Information Each release tag now includes: - ✅ Version number and Docker image reference - ✅ Full and short commit hashes - ✅ Build timestamp (UTC) - ✅ Commit author information - ✅ Automatic changelog (commits since last release) - ✅ Ready-to-use Docker pull commands ### 🛠️ Maintainability - **Template-based**: Release format can be updated without touching workflow code - **Separation of concerns**: Template logic separated from CI logic - **Version controlled**: Template changes tracked in git - **Easy customization**: Edit template to change release note format ### 📖 Better Documentation - Release tags serve as complete release documentation - Easy to see what changed between versions - Quick reference for deployment commands - Professional release notes format ## Example Release Tag After this PR, release tags will look like: ``` Release 0.1.2 Docker Image: git.jusemon.com/jusemon/threejs-test:0.1.2 Commit: abc1234 (abc1234def5678...) Build Date: 2025-11-25 23:00:00 UTC Author: Developer Name <dev@example.com> ## Changes - Fix collision detection bug (def5678) - Add new game feature (ghi9012) ## Docker Image ``` docker pull git.jusemon.com/jusemon/threejs-test:0.1.2 ``` ## Deployment The image is also available as `latest`: ``` docker pull git.jusemon.com/jusemon/threejs-test:latest ``` ``` ## Technical Details - Template uses `sed` for placeholder replacement - Changelog automatically generated from git log - Handles first release (shows last 10 commits if no previous tag) - Template validation (fails if template file missing) - Maintains backward compatibility with existing workflow ## Testing The workflow will: 1. ✅ Generate release notes from template on next merge to main 2. ✅ Create tag with detailed information 3. ✅ Include all metadata and changelog
jusemon added 1 commit 2025-11-25 17:31:51 -05:00
Add release notes template with enhanced tag information
All checks were successful
Build and Publish Docker Image / Build and Validate (pull_request) Successful in 8s
Build and Publish Docker Image / Publish to Registry (pull_request) Has been skipped
3ac719cfb1
jusemon merged commit 3d78da0228 into main 2025-11-25 17:33:33 -05:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: jusemon/threejs-test#2
No description provided.