Skip to content

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*

# Runs automatically via GitHub Actions
# See: release_pipeline.yaml

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

  1. Remove from download servers
  2. Revert GitHub release
  3. Restore previous version
  4. Notify users
  5. 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

# Version bump triggers release
python version_manager.py bump minor
# → Triggers release pipeline

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)