This directory contains the reorganized GitHub Actions workflows for WhisperDesk, split into logical components for better maintainability and reusability.
.github/
βββ workflows/
β βββ build.yml # Build jobs only (PRs & pushes)
β βββ release.yml # Release creation only (tags & manual)
β βββ test.yml # Tests, linting, and checks
β βββ reusable/
β βββ build-platform.yml # Reusable platform build workflow
β βββ setup-signing.yml # Code signing setup (unused)
βββ actions/
β βββ setup-build-env/ # Composite action for environment setup
β βββ build-whisper/ # Composite action for whisper.cpp build
β βββ build-diarization/ # Composite action for diarization build
β βββ verify-build/ # Composite action for build verification
βββ scripts/
βββ build-whisper.sh # Shell script for whisper.cpp building
βββ build-diarization.sh # Shell script for diarization building
βββ rename-portable.js # Script to rename ZIP files to Portable
βββ sign-windows.js # Windows code signing script
- Trigger: Push to main/master/release branches, PRs, manual dispatch
- Purpose: Build and test across all platforms
- Outputs: Build artifacts for testing
- Dependencies: Uses reusable
build-platform.yml
- Trigger: Git tags (
v*), manual dispatch with release flag - Purpose: Create GitHub releases with signed binaries
- Dependencies: Uses reusable
build-platform.yml - Outputs: GitHub release with all platform binaries
- Trigger: Push to main/master/release branches, PRs, manual dispatch
- Purpose: Linting, dependency checks, build verification
- Fast execution: No actual platform builds, just verification
Handles building for a specific platform (Windows, macOS, Linux) and architecture.
Inputs:
platform: windows, macos, or linuxarch: x64 or arm64version: Version string for the buildfile_version: File version for naming
Secrets:
APPLE_CERTIFICATE_P12: Apple developer certificate (optional)APPLE_CERTIFICATE_PASSWORD: Certificate password (optional)APPLE_TEAM_ID: Apple team ID (optional)
Sets up Node.js, pnpm, and platform-specific dependencies.
Builds whisper.cpp binary for the target platform using official repository.
Builds the enhanced multi-speaker diarization system.
Verifies all build prerequisites are met before proceeding with Electron build.
- Build: Only handles building and testing
- Release: Only handles release creation
- Test: Only handles code quality checks
- PRs only run build and test workflows
- Release workflow only runs when creating releases
- Test workflow provides quick feedback on code quality
- Platform builds are reusable across build and release workflows
- Composite actions eliminate code duplication
- Scripts can be shared and version controlled
- Each workflow has a single responsibility
- Changes to build logic only affect relevant workflows
- Easier to debug and modify specific functionality
- Easy to add new platforms or architectures
- Can extend with additional test types
- Supports parallel development by multiple team members
# Automatically triggered on PR
git push origin feature-branch
# Manual build
gh workflow run build.yml# Tag-based release (automatic)
git tag v2.1.0
git push origin v2.1.0
# Manual release
gh workflow run release.yml -f create_release=true -f release_tag=v2.1.0# Automatically triggered on push/PR
# Or manually:
gh workflow run test.yml- Uses self-signed certificates for CI builds
- Production builds should use proper code signing certificates
- Set
WIN_CSC_LINKandWIN_CSC_KEY_PASSWORDsecrets
- Supports Apple Developer certificates via secrets:
APPLE_CERTIFICATE_P12: Base64-encoded P12 certificateAPPLE_CERTIFICATE_PASSWORD: Certificate passwordAPPLE_TEAM_ID: Apple developer team ID
- Falls back to ad-hoc signing if certificates not available
- No code signing required
- Builds create AppImage, DEB, RPM, and TAR.GZ packages
Each platform build creates artifacts with the following naming:
- Windows:
WhisperDesk-Setup-{version}-win-x64.exe,WhisperDesk-Portable-{version}-win-x64.zip - macOS:
WhisperDesk-Portable-{version}-mac-{arch}.zip - Linux:
WhisperDesk-{version}-linux-x64.{AppImage,deb,rpm,tar.gz}
- Check the specific platform build logs
- Verify dependencies are correctly installed
- Check for platform-specific issues in composite actions
- Verify certificates are properly configured in secrets
- Check certificate expiration dates
- Review signing scripts for platform-specific errors
- Ensure build workflow completed successfully
- Check artifact upload/download steps
- Verify file naming patterns match expectations
This structure replaces the monolithic main.yml workflow with:
- Cleaner separation of build vs. release logic
- Faster CI feedback for development
- Better organization of reusable components
- Improved maintainability and debugging
The original workflow functionality is preserved while providing better structure for future development.