A complete CI/CD workflow system has been implemented for the DSP4Guitar project, providing automated building, testing, and releasing across multiple platforms.
-
.github/workflows/ci.yml- Main CI workflow- Triggers on push to main/develop branches and pull requests
- Builds on Ubuntu, macOS, and Windows
- Uploads build artifacts (VST3, AU)
- Runs code quality checks
- Verifies documentation
-
.github/workflows/release.yml- Release workflow- Triggers on release creation
- Builds optimized versions for all platforms
- Packages with documentation
- Attaches archives to GitHub releases
CMakeLists.txt- CMake build configuration- Integrates JUCE 7.0.9
- Supports VST3, AU, and Standalone formats
- Configured for C++17
- Links all required JUCE modules
-
.github/CI_DOCUMENTATION.md- Comprehensive CI guide- Detailed workflow documentation
- Build system explanation
- Troubleshooting guide
- Extension instructions
-
.github/CI_QUICKSTART.md- Quick start guide- Simple getting started instructions
- How to use CI features
- Common workflows
- Tips and tricks
-
.github/pull_request_template.md- PR template- Structured PR descriptions
- Testing checklist
- Change type categorization
-
CONTRIBUTING.md- Contribution guidelines- Development setup
- CI workflow explanation
- Code quality standards
- PR guidelines
-
scripts/pre-commit-check.sh- Bash validation script- Checks for trailing whitespace
- Verifies formatting
- Detects debug statements
- Validates CMake configuration
-
scripts/pre-commit-check.ps1- PowerShell validation script- Windows equivalent of bash script
- Same validation checks
- Color-coded output
.gitignore- Git ignore rules- Excludes build directories
- Ignores JUCE framework (downloaded by CI)
- Excludes IDE files
- Ignores compiled binaries
README.md- Updated with:- CI status badge
- Build instructions
- Development section with CI info
- Links to CI documentation
- ✅ Linux (Ubuntu latest)
- ✅ macOS (latest)
- ✅ Windows (latest)
- ✅ Automatic builds on every push/PR
- ✅ JUCE framework caching (faster builds)
- ✅ Artifact uploads (downloadable plugins)
- ✅ Platform-specific dependency installation
- ✅ Trailing whitespace detection
- ✅ Formatting checks
- ✅ Debug statement detection
- ✅ Documentation verification
- ✅ Automated release packaging
- ✅ Platform-specific archives
- ✅ Attachment to GitHub releases
- ✅ Included documentation
- ✅ Local validation scripts
- ✅ Comprehensive documentation
- ✅ Quick start guide
- ✅ PR templates
- ✅ Contribution guidelines
- ✅ Status badges
-
Build Job
- Matrix strategy: 3 platforms
- Steps: Checkout → Install deps → Cache JUCE → Download JUCE → Configure → Build → Upload
- Outputs: VST3 (all), AU (macOS)
- Time: ~10-15 minutes per platform
-
Code Quality Job
- Single platform (Ubuntu)
- Checks: whitespace, formatting, debug prints
- Non-blocking (warnings allowed)
- Time: ~1 minute
-
Documentation Job
- Single platform (Ubuntu)
- Verifies: README, LICENSE
- Time: <1 minute
- Similar to CI but optimized for releases
- Creates compressed archives
- Attaches to GitHub release
- Includes README and LICENSE
-
Clone and build locally:
git clone https://github.com/GizzZmo/DSP4Guitar.git cd DSP4Guitar git clone --depth 1 --branch 7.0.9 https://github.com/juce-framework/JUCE.git cmake -B build -DCMAKE_BUILD_TYPE=Release cmake --build build --config Release -
Validate before committing:
./scripts/pre-commit-check.sh # Linux/macOS .\scripts\pre-commit-check.ps1 # Windows
-
Push changes:
- CI automatically runs
- Check Actions tab for status
- Download artifacts if needed
- Fork the repository
- Make changes in a branch
- Run local validation
- Create pull request
- CI runs automatically
- Review feedback and artifacts
-
Download from Releases:
- Go to Releases page
- Download platform-specific archive
- Extract and install
-
Download from Actions:
- Find successful workflow run
- Download artifact
- Test the plugin
- Version: 7.0.9
- Modules: audio, DSP, GUI, processors
- Formats: VST3, AU, Standalone
- Minimum version: 3.15
- C++ standard: 17
- Build types: Debug, Release
- Plugin metadata configured
Linux:
- ALSA development files
- JACK development files
- X11 libraries
- Mesa/OpenGL
macOS:
- Xcode Command Line Tools
- System frameworks (automatic)
Windows:
- Visual Studio 2019+
- Windows SDK
All files have been validated:
- ✅ YAML syntax validated
- ✅ Scripts tested
- ✅ Documentation reviewed
- ✅ Links verified
- ✅ Formatting checked
- Merge PR to enable CI
- First build will run on main/develop
- Monitor Actions tab
- Download and test artifacts
- Create release to test release workflow
- Iterate based on feedback
- Update version in CMakeLists.txt
- Update version in workflows
- Update cache key in ci.yml
- Test thoroughly
- Add test framework to CMakeLists.txt
- Add test step to ci.yml
- Configure CTest if needed
- Add new jobs to ci.yml
- Add new platforms to matrix
- Add code coverage
- Add performance benchmarks
- 📖 Read CI_DOCUMENTATION.md for details
- 🚀 Read CI_QUICKSTART.md for quick start
- 📝 Read CONTRIBUTING.md for guidelines
- 🐛 Open issues with "CI:" prefix
Status: ✅ Complete and ready for use
Created: September 30, 2025
Last Updated: September 30, 2025