Build System

BeatConnect’s cloud build system compiles your plugin for multiple platforms, signs the binaries, and delivers ready-to-distribute artifacts.

Build Overview

┌─────────────────────────────────────────────────────────────────┐
│                        Your Repository                          │
└─────────────────────────────┬───────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                    BeatConnect Build System                      │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────────┐  │
│  │   Clone     │→ │   Build     │→ │  Sign & Notarize        │  │
│  │   Repo      │  │  (parallel) │  │  (per platform)         │  │
│  └─────────────┘  └─────────────┘  └─────────────────────────┘  │
└─────────────────────────────┬───────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                      Signed Artifacts                            │
│  • MyPlugin.vst3 (macOS Universal)                              │
│  • MyPlugin.component (AU, macOS)                                │
│  • MyPlugin.vst3 (Windows x64)                                   │
└─────────────────────────────────────────────────────────────────┘

Supported Platforms

PlatformArchitectureCompiler
macOSUniversal (x86_64 + arm64)Apple Clang 15+
macOSIntel only (x86_64)Apple Clang 15+
macOSApple Silicon only (arm64)Apple Clang 15+
Windowsx64MSVC 2022

Default: macOS Universal + Windows x64

Supported Formats

FormatPlatformsNotes
VST3macOS, WindowsRecommended for widest compatibility
AU (Audio Units)macOS onlyRequired for Logic Pro, GarageBand
StandalonemacOS, WindowsDesktop application version
AAXmacOS, WindowsPro Tools only, requires Avid agreement

Format Selection

In the build configuration:

{
  "formats": ["vst3", "au"],
  "platforms": ["macos", "windows"]
}

Results in:

  • MyPlugin.vst3 (macOS Universal)
  • MyPlugin.component (macOS AU)
  • MyPlugin.vst3 (Windows x64)

Triggering Builds

Manual Builds (Creator Portal)

  1. Go to Projects → Your Project
  2. Click Build
  3. Configure options:
    • Platforms
    • Formats
    • Release type
    • Build flags
  4. Click Start Build

API Builds

curl -X POST https://api.beatconnect.com/functions/v1/builds \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "project_id": "your-project-id",
    "platforms": ["macos", "windows"],
    "formats": ["vst3", "au"],
    "release_type": "patch"
  }'

Webhook Builds (Automatic)

Configure in Project Settings → Webhooks:

{
  "trigger": "push",
  "branch": "main",
  "auto_build": true,
  "platforms": ["macos", "windows"],
  "formats": ["vst3", "au"]
}

Now pushes to main automatically trigger builds.

Release Types

TypeVersion ChangeUse Case
major1.0.0 → 2.0.0Breaking changes, major features
minor1.0.0 → 1.1.0New features, backward compatible
patch1.0.0 → 1.0.1Bug fixes, small improvements
dev1.0.0-dev.1Development/testing builds
release1.0.0-dev.1 → 1.0.0Promote dev to release

Build Flags

Control build behavior with flags:

{
  "flags": {
    "enableActivationKeys": true,
    "enableCreatorMode": false,
    "enableFakeMode": false,
    "enableDebugMode": false
  }
}
FlagDescription
enableActivationKeysBuild with license activation checking
enableCreatorModeCreator test mode (bypasses activation)
enableFakeModeFake success responses (testing only)
enableDebugModeExtra debug logging

Build Process Details

Phase 1: Repository Clone

[1/6] Cloning repository...
├─ Fetching from GitHub
├─ Checking out commit abc1234
└─ Initializing submodules
  • Shallow clone for speed
  • Submodules recursively initialized
  • Specific commit used (for reproducibility)

Phase 2: CMake Configuration

[2/6] Configuring CMake...
├─ Detecting JUCE
├─ Configuring for macOS Universal
├─ Configuring for Windows x64
└─ Generating build files

Default CMake options:

CMAKE_BUILD_TYPE=Release
CMAKE_OSX_ARCHITECTURES="x86_64;arm64"
CMAKE_OSX_DEPLOYMENT_TARGET="10.13"

Phase 3: Compilation

[3/6] Building...
├─ macOS Universal (parallel)
│   ├─ Compiling sources
│   ├─ Linking VST3
│   └─ Linking AU
└─ Windows x64 (parallel)
    ├─ Compiling sources
    └─ Linking VST3
  • Builds run in parallel across platforms
  • Multi-core compilation within each platform
  • Typical time: 3-10 minutes

Phase 4: Code Signing

[4/6] Signing...
├─ macOS: Signing with Developer ID
├─ macOS: Notarizing with Apple
└─ Windows: Authenticode signing

See Code Signing for details.

Phase 5: Artifact Upload

[5/6] Uploading artifacts...
├─ MyPlugin.vst3 (macOS) → R2
├─ MyPlugin.component → R2
└─ MyPlugin.vst3 (Windows) → R2
  • Secure upload to Cloudflare R2
  • SHA256 checksums calculated
  • Download URLs generated

Phase 6: Cleanup

[6/6] Cleaning up...
├─ Removing source code
├─ Clearing build cache
└─ Build complete!

Your source code is never stored. It’s deleted immediately after the build.

Build Status

StatusDescription
pendingBuild created, waiting to start
queuedWaiting for build runner
runningBuild in progress
successBuild completed successfully
failedBuild failed (check logs)
cancelledBuild was cancelled

Build Artifacts

Each successful build produces:

ArtifactPlatformDescription
MyPlugin.vst3macOSSigned, notarized VST3 bundle
MyPlugin.componentmacOSSigned, notarized AU bundle
MyPlugin.vst3WindowsAuthenticode-signed VST3
build.logAllComplete build log
checksums.txtAllSHA256 hashes for verification

Downloading Artifacts

Via Creator Portal:

  • Click Download on any artifact
  • Or Download All for ZIP bundle

Via API:

curl -X GET "https://api.beatconnect.com/functions/v1/builds/{build_id}/download/{artifact_id}" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -L -o artifact.zip

Build Quotas

TierBuilds/MonthExtra Build Cost
Developer5$5 per build
Team20$4 per build
EnterpriseUnlimitedContact sales

Quota Rules

  • Failed builds due to your code count against quota
  • Failed builds due to our infrastructure don’t count
  • Cancelled builds before compilation don’t count
  • Quota resets on billing cycle

Checking Usage

curl "https://api.beatconnect.com/functions/v1/builds/usage" \
  -H "Authorization: Bearer YOUR_TOKEN"

Response:

{
  "period": "2025-01",
  "used": 3,
  "limit": 5,
  "remaining": 2,
  "extra_builds": 0
}

Build Configuration

CMake Variables

Override defaults in your CMakeLists.txt:

# Minimum macOS version
set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0" CACHE STRING "")
 
# Disable specific formats
set(JUCE_BUILD_AU OFF)
 
# Custom compiler flags
add_compile_options(-DPRODUCTION_BUILD=1)

Build Presets (CMakePresets.json)

{
  "version": 3,
  "configurePresets": [
    {
      "name": "release",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "CMAKE_OSX_DEPLOYMENT_TARGET": "10.13"
      }
    }
  ]
}

Parallel Builds

BeatConnect builds platforms in parallel:

┌─────────────────┐     ┌─────────────────┐
│   macOS Build   │     │  Windows Build  │
│                 │     │                 │
│  ┌───────────┐  │     │  ┌───────────┐  │
│  │ Configure │  │     │  │ Configure │  │
│  └─────┬─────┘  │     │  └─────┬─────┘  │
│        ▼        │     │        ▼        │
│  ┌───────────┐  │     │  ┌───────────┐  │
│  │   Build   │  │     │  │   Build   │  │
│  └─────┬─────┘  │     │  └─────┬─────┘  │
│        ▼        │     │        ▼        │
│  ┌───────────┐  │     │  ┌───────────┐  │
│  │   Sign    │  │     │  │   Sign    │  │
│  └───────────┘  │     │  └───────────┘  │
└────────┬────────┘     └────────┬────────┘
         │                       │
         └───────────┬───────────┘
                     ▼
              ┌─────────────┐
              │   Upload    │
              └─────────────┘

Build Caching

We cache:

  • CMake configuration
  • Compiled object files (per-project)
  • JUCE modules

This speeds up subsequent builds significantly.

Cache Invalidation

Cache is cleared when:

  • CMakeLists.txt changes
  • JUCE version changes
  • You request a clean build

Request clean build:

{
  "project_id": "...",
  "clean_build": true
}

Build Logs

Full logs available for debugging:

=== BeatConnect Build System ===
Build ID: build_abc123
Project: My Plugin
Version: 1.0.1
Platforms: macos, windows
Formats: vst3, au

[2025-01-15 10:30:00] Cloning repository...
[2025-01-15 10:30:05] Commit: abc1234 "Fixed buffer handling"
[2025-01-15 10:30:10] Configuring CMake for macOS...
[2025-01-15 10:30:15] Configuring CMake for Windows...
[2025-01-15 10:30:20] Building macOS targets...
...

Download logs:

  • In Creator Portal: Build DetailsDownload Log
  • Via API: Include build.log in artifact download

Next Steps