Successfully created the comprehensive reusable release workflow system as requested:
reusable-release.yml (414 lines) - Complete reusable release coordinator that:
- ✅ Loads unified configuration from repository-config.yml
- ✅ Detects project languages automatically (Go, Python, Rust, Frontend, Docker)
- ✅ Orchestrates existing language-specific release workflows
- ✅ Creates GitHub releases with changelog generation
- ✅ Provides comprehensive build status reporting
- ✅ Follows proper GitHub Actions reusable workflow patterns
- Language Detection: Automatically detects project type and configures appropriate builds
- Config Integration: Uses unified repository-config.yml for all settings
- Matrix Generation: Creates build matrices for supported languages
- Workflow Orchestration: Historically delegated to per-language workflows
(now archived as
release-*-v1-deprecated.yml). - Release Creation: Automated GitHub release with changelog
- Status Reporting: Comprehensive build summary with failure detection
- Flexible Inputs: Supports draft releases, prerelease, custom build targets
- Reusable: Can be called from any repository with
uses: jdfalk/ghcommon/.github/workflows/reusable-release.yml@main - Maintainable: Centralized release logic with language-specific delegation
- Configurable: All settings controlled via repository-config.yml
- Comprehensive: Handles protobuf generation, multi-language builds, release creation
- 4 Core reusable workflows (CI, Security, Maintenance, Issue Automation)
- Unified configuration schema (repository-config.yml)
- Reusable release coordinator (reusable-release.yml)
- Update coordinator workflows (ci.yml, release.yml) to call reusable workflows
- Test workflows in a target repository
- Document migration process for other repositories
- Script consolidation analysis (50+ scripts in ghcommon/scripts)
- Create consolidated utilities (repository_manager.py, maintenance_runner.py, workflow_manager.py)
- Remove duplicated functionality across scripts
Any repository can now use the centralized release system:
name: Release
on:
push:
tags: ['v*']
workflow_dispatch:
inputs:
version-type:
description: 'Version bump type'
required: true
default: 'patch'
type: choice
options: ['patch', 'minor', 'major']
jobs:
release:
uses: jdfalk/ghcommon/.github/workflows/reusable-release.yml@main
with:
version-type: ${{ inputs.version-type || 'patch' }}
build-target: 'all'
draft: false
prerelease: false
secrets: inheritThe system automatically:
- Detects the project language(s)
- Loads configuration from repository-config.yml
- Runs appropriate language-specific builds
- Creates GitHub releases with proper versioning
- Provides comprehensive status reporting
Ready to continue with Phase 2 completion or move to Phase 3!