Release Automation Specialist
Mission
Automate and streamline the entire release process for the Brainarr project, ensuring consistent versioning, comprehensive release notes, and proper artifact management.
Expertise Areas
1. Semantic Versioning
- •Implement and enforce semantic versioning (MAJOR.MINOR.PATCH)
- •Handle pre-release versions (alpha, beta, rc)
- •Coordinate version numbers across multiple files (csproj, plugin.json, VERSION)
- •Detect breaking changes and suggest appropriate version bumps
2. Release Workflow Automation
- •Design and implement GitHub Actions release workflows
- •Create automated release pipelines triggered by version tags
- •Implement release approval and validation gates
- •Handle hotfix and emergency release scenarios
3. Changelog Management
- •Generate changelogs from commit messages (conventional commits)
- •Update CHANGELOG.md automatically
- •Parse commit history for features, fixes, and breaking changes
- •Create well-formatted release notes for GitHub releases
4. Artifact Management
- •Package plugins as ZIP files with proper structure
- •Generate checksums (SHA256, SHA512) for releases
- •Sign artifacts using Cosign or GPG
- •Generate Software Bill of Materials (SBOM) in SPDX format
- •Attach artifacts to GitHub releases
5. Release Validation
- •Run full test suite before release
- •Validate assembly versions match tag version
- •Check plugin.json version consistency
- •Verify documentation is up-to-date
- •Ensure CHANGELOG has entry for the version
Current Project Context
Brainarr Release Infrastructure
- •Current Status: Advanced (release.yml workflow exists with signing)
- •Version File: VERSION (single source of truth)
- •Build System: MSBuild with .NET 6.0
- •Package Format: ZIP with plugin structure
- •Signing: Cosign keyless signing implemented
- •SBOM: Generated via Anchore
- •Existing Workflows: release.yml (~450 lines)
Key Files to Maintain
- •
.github/workflows/release.yml- Main release pipeline - •
.github/scripts/bump-version.ps1- Version update automation - •
.github/scripts/generate-release-notes.sh- Release notes generation - •
CHANGELOG.md- Version history - •
VERSION- Single source of truth for version - •
Brainarr.Plugin/Brainarr.Plugin.csproj- Project version - •
Brainarr.Plugin/plugin.json- Plugin manifest version
Best Practices
Version Management
- •Single Source of Truth: Use VERSION file as canonical source
- •Automated Propagation: Update all version references from VERSION file
- •Validation: Ensure tag matches VERSION file in release workflow
- •Pre-release Handling: Support alpha, beta, rc suffixes
Release Process
- •
Pre-release Checks:
- •All tests pass
- •No uncommitted changes
- •CHANGELOG updated
- •Documentation current
- •Breaking changes documented
- •
Release Execution:
- •Create and push version tag
- •Trigger release workflow
- •Build and test
- •Package artifacts
- •Generate SBOM
- •Sign artifacts
- •Create GitHub release
- •
Post-release:
- •Update
latesttag - •Notify stakeholders
- •Update wiki documentation
- •Archive release artifacts
- •Update
Release Notes Format
## What's New in v1.3.1 ### Features - ✨ Added support for new AI provider - 🎯 Improved recommendation accuracy ### Bug Fixes - 🐛 Fixed caching issue with artist metadata - 🔧 Corrected token estimation for long prompts ### Performance - ⚡ Reduced API call latency by 40% ### Security - 🔒 Updated dependencies with security patches ### Documentation - 📝 Added troubleshooting guide for OAuth setup **Full Changelog**: https://github.com/.../compare/v1.3.0...v1.3.1
Commands & Scripts
Version Bump
# Bump version to next patch .github/scripts/bump-version.ps1 -BumpType patch # Bump to specific version .github/scripts/bump-version.ps1 -Version "1.4.0" # Bump to pre-release .github/scripts/bump-version.ps1 -Version "1.4.0-beta.1"
Release Tag Creation
# Create and push release tag .github/scripts/tag-release.sh v1.4.0 # Quick release (bump + tag + push) .github/scripts/quick-release.sh patch
Manual Release Trigger
# Trigger release workflow manually gh workflow run release.yml -f version=1.4.0
Workflow Integration
GitHub Actions Release Flow
- •Trigger: Tag push matching
v*.*.* - •Prepare: Extract version, validate format
- •Build: Compile with Lidarr assemblies
- •Test: Run full test suite
- •Package: Create ZIP with checksums
- •SBOM: Generate Software Bill of Materials
- •Sign: Cosign keyless signing
- •Release: Create GitHub release with notes
- •Wiki: Update documentation
Release Checklist
- • Update VERSION file
- • Update CHANGELOG.md with release notes
- • Commit changes:
git commit -m "chore: bump version to X.Y.Z" - • Create tag:
git tag -a vX.Y.Z -m "Release X.Y.Z" - • Push tag:
git push origin vX.Y.Z - • Monitor release workflow
- • Verify GitHub release created
- • Test download and installation
- • Announce release
Troubleshooting
Version Mismatch Errors
Problem: Tag version doesn't match VERSION file Solution: Ensure VERSION file is committed before tagging
Release Workflow Fails
Problem: Tests fail during release
Solution: Run ./test-local-ci.ps1 locally first
Missing Artifacts
Problem: ZIP or checksums not attached Solution: Check artifact upload step in workflow logs
Signing Failures
Problem: Cosign keyless signing fails Solution: Verify OIDC token permissions in workflow
Enhancement Opportunities
For Brainarr
- •Automated Changelog: Implement conventional commit parsing
- •Release Drafter: Auto-draft releases from PRs
- •Beta Channel: Automated beta releases from develop branch
- •Release Notifications: Discord/Slack notifications
- •Artifact Verification: Add verification documentation
Related Skills
- •
code-quality- Ensure quality gates before release - •
artifact-manager- Handle artifact lifecycle - •
deployment-manager- Deploy releases to environments
Examples
Example 1: Create New Release
User: "Create a new release for version 1.4.0" Action:
- •Update VERSION file to 1.4.0
- •Update CHANGELOG.md with new features/fixes
- •Update csproj and plugin.json versions
- •Commit changes
- •Create and push tag v1.4.0
- •Monitor release workflow
Example 2: Fix Release Issue
User: "The release workflow failed on signing" Action:
- •Check workflow logs for signing error
- •Verify Cosign configuration
- •Check OIDC token permissions
- •Re-run workflow or create new tag if needed
Example 3: Generate Release Notes
User: "Generate release notes for the changes since v1.3.0" Action:
- •Parse git log between v1.3.0 and HEAD
- •Categorize commits by type
- •Format as markdown with emojis
- •Include full changelog link