05_17_03: Release Automation - AudioLab CI/CD Pipeline¶
Executive Summary¶
Automated release pipeline for AudioLab audio plugins. Handles version bumping, changelog generation, multi-platform builds, testing, packaging, and distribution.
Key Features: - Automated version management - Changelog generation from commits - Multi-platform builds (Windows, macOS, Linux) - All plugin formats (VST3, AU, AAX, CLAP) - Automated testing and validation - Code signing and notarization - Distribution to multiple channels
Release Types¶
Major Release¶
- Version: MAJOR bump (1.0.0 → 2.0.0)
- Trigger: BREAKING CHANGE commits
- Requires: Architecture review, migration guide, beta testing
- Schedule: Yearly (Q1)
Minor Release¶
- Version: MINOR bump (1.0.0 → 1.1.0)
- Trigger: feat commits
- Requires: Feature complete, all tests pass
- Schedule: Quarterly
Patch Release¶
- Version: PATCH bump (1.0.0 → 1.0.1)
- Trigger: fix commits
- Requires: Bug verified fixed, regression tests pass
- Schedule: As needed (monthly max)
Hotfix Release¶
- Version: PATCH bump (expedited)
- Trigger: hotfix/* branch merge
- Requires: Emergency approval, critical bug verification
- Response Time: < 24 hours
Pipeline Stages¶
1. Preparation¶
- Determine release type
- Calculate new version
- Create release branch
- Update version files
- Generate changelog
- Generate release notes
2. Build¶
- Clean workspace
- Configure build environment
- Build all platforms (Windows, macOS, Linux)
- Build all formats (VST3, AU, AAX, CLAP, Standalone)
- Sign binaries
3. Testing¶
- Unit tests (coverage ≥ 90%)
- Integration tests (coverage ≥ 85%)
- Regression tests
- Plugin validation (pluginval)
- Performance benchmarks
- Compatibility tests (6 major DAWs)
4. Validation¶
- Verify binary signatures
- Check plugin formats
- Validate installers
- Security scan
- License compliance check
5. Packaging¶
- Create installers (MSI, PKG, DEB, RPM, AppImage)
- Package for distribution
- Generate checksums (SHA256, SHA512)
- Create release archives
6. Distribution¶
- Upload to artifact repository
- Update download servers
- Deploy to stores (Plugin Boutique, Splice)
- Create GitHub release
- Update documentation site
7. Notification¶
- Notify development team
- Notify QA team
- Notify support team
- Update status dashboard
- Send customer notifications
Usage¶
Automatic Release (CI/CD)¶
Triggered by:
- Push to main with feat/fix commits
- Merge of release/* branch
- Push of version tag v*
Manual Release¶
# Trigger manual release
gh workflow run "Release Pipeline" \
--field release_type=minor
# Or use release manager
python release_manager.py start --type minor
Generate Changelog¶
# Generate for current version
python changelog_generator.py generate
# Generate since specific tag
python changelog_generator.py generate --since v1.0.0
# Preview without writing
python changelog_generator.py preview
Build Matrix¶
Platforms¶
- Windows: x64, MSVC 2022
- macOS: arm64 + x64 universal, Clang, deployment target 10.13
- Linux: x64, GCC 11, Ubuntu 20.04/22.04
Plugin Formats¶
- VST3
- AU (macOS only)
- AAX
- CLAP
- Standalone
Quality Gates¶
Pre-Release (Required)¶
- ✅ All tests passing
- ✅ Code coverage ≥ 90%
- ✅ No critical bugs
- ✅ Security scan clean
- ✅ Performance benchmarks met
- ✅ Documentation complete
- ✅ Release notes reviewed
Post-Release (Monitoring)¶
- ⚠️ Verify downloads
- ⚠️ Monitor crash reports (24h)
- ⚠️ Check user feedback (48h)
Changelog Format¶
Generated automatically from conventional commits:
## [2.1.0] - 2024-01-15
### Breaking Changes
- **api**: Preset format changed from v1 to v2 (abc123)
### New Features
- **dsp**: add plate reverb engine (def456)
- **ui**: implement preset browser (ghi789)
### Bug Fixes
- **dsp**: resolve audio glitch at buffer boundaries (jkl012)
- **ui**: correct knob sensitivity (mno345)
### Performance Improvements
- **dsp**: optimize FFT using AVX2 intrinsics (pqr678)
Code Signing¶
Windows¶
- Certificate: EV Code Signing
- Timestamp: DigiCert
- Verification: After signing
macOS¶
- Certificate: Developer ID Application
- Notarization: Yes
- Stapling: Yes
Rollback¶
Automatic Rollback Triggers¶
- Critical crash rate > 5%
- Installation failure rate > 10%
- Plugin validation failures
Manual Rollback¶
- Remove from download servers
- Revert GitHub release
- Restore previous version
- Notify users
- Post-mortem analysis
Approvals¶
Major Release¶
- CTO
- VP Engineering
- Product Manager
- QA Lead
Minor Release¶
- Tech Lead
- QA Lead
Patch Release¶
- Tech Lead
Hotfix Release (Expedited)¶
- On-call Engineer
- Tech Lead
Metrics¶
Tracked automatically: - Release frequency - Build duration - Test pass rate - Deployment success rate - Time to production - Rollback frequency - Download counts - Crash reports
Configuration Files¶
- release_automation.yaml: Complete release configuration
- release_pipeline.yaml: CI/CD pipeline definition
- changelog_generator.py: Automated changelog generation
Integration¶
With Version Manager¶
With Commit Conventions¶
# Conventional commits → Changelog
git commit -m "feat(dsp): add reverb"
# → Included in changelog automatically
With CI/CD¶
- GitHub Actions
- Azure Pipelines
- Jenkins
Part of AudioLab Version Control System (05_17_VERSION_CONTROL)