Skip to content

CI: Automate GitHub release workflow #126

@senomorf

Description

@senomorf

Objective

Implement automated GitHub release workflow with changelog generation, asset creation, and semantic versioning to formalize LoadShaper release process.

Current State

Manual release process:

  • No automated release creation
  • No standardized changelog generation
  • Manual version management
  • No release asset automation
  • Inconsistent release documentation

Strong foundation exists:

  • ✅ Automated Docker builds and publishing
  • ✅ Security scanning and image signing infrastructure
  • ✅ Comprehensive Helm charts ready for packaging

Target State

Automated release workflow:

  • GitHub releases created automatically from git tags
  • Generated changelogs from commit history
  • Release assets (container manifests, Helm charts)
  • Semantic versioning integration
  • Consistent release documentation

Implementation Approach

Depends On:

Release Automation Workflow

New workflow file (.github/workflows/release.yml):

name: Release

on:
  push:
    tags: ["v*.*.*"]

jobs:
  create-release:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      packages: write
      
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0  # Full history for changelog
          
      - name: Validate semantic version tag
        run: |
          # Validate tag format matches semantic versioning
          echo "Validating tag format for release"
          
      - name: Generate changelog
        run: |
          # Generate changelog from git commits
          PREVIOUS_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "Initial release")
          echo "## Changes since previous release" > CHANGELOG.md
          git log --pretty=format:"- %s (%h)" HEAD...${PREVIOUS_TAG} >> CHANGELOG.md
          
      - name: Create GitHub release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref_name }}
          release_name: LoadShaper Release
          body_path: CHANGELOG.md

Version Management

Manual Tagging Process (simple approach):

# Create and push semantic version tag
git tag -a "v2.3.0" -m "Release v2.3.0"
git push origin v2.3.0

# Workflow automatically creates release

Release Asset Strategy

Container Images

  • Multi-platform images: Built and published for amd64/arm64
  • Signed images: All release images signed with Cosign
  • Manifest: Container platform details and signatures

Helm Charts

  • Packaged charts: Versioned Helm packages for easy deployment
  • Values examples: Production-ready value files included
  • Documentation: Chart README with deployment guidance

Release Documentation

  • Generated changelog: Automatic categorization from commit messages
  • Breaking changes: Highlighted compatibility notes
  • Upgrade guidance: Migration steps for version updates

Why Automated Releases Matter

Professional Project Management

  • Formal releases: Clear versioning and release notes
  • Predictable updates: Users know when and what changed
  • Asset distribution: Easy access to release artifacts
  • Release history: Clear project evolution timeline

User Experience

  • Semantic versioning: Predictable compatibility and update impact
  • Release notes: Clear understanding of changes and improvements
  • Asset availability: Easy access to specific version artifacts
  • Upgrade guidance: Smooth update experience

Development Process

  • Release discipline: Encourages quality and testing before releases
  • Changelog automation: Reduces manual documentation burden
  • Version management: Clear project progression and milestones
  • Distribution automation: Consistent release artifact creation

Success Criteria

Release Automation

  • GitHub releases created automatically from semantic version tags
  • Changelog generated from commit history with categorization
  • Container images built and published for releases
  • Release assets (manifests, charts) attached correctly

Version Management

  • Semantic versioning enforced (v1.2.3 format)
  • Release tags trigger workflow correctly
  • Version consistency across artifacts
  • Clear upgrade path documentation

Asset Quality

  • Multi-platform container images in releases
  • Signed images for supply chain security
  • Packaged Helm charts with correct versioning
  • Complete container manifests and metadata

Related Issues

Testing Requirements

Release Process

  • Test release creation with semantic version tags
  • Validate changelog generation accuracy
  • Verify asset creation and attachment
  • Test release workflow with different commit types

Integration

  • Release workflow integrates with existing CI
  • Docker builds trigger correctly for releases
  • Image signing works for release images
  • Helm charts package correctly

Priority: P3-defer - Nice-to-have for project formalization but not critical
Effort: Medium - Standard release automation with changelog generation
Value: Medium - Improves project professionalism and user experience

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3-deferFuture considerationsci-cdCI/CD automation tasksdocumentationDocs and guides

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions