Skip to content

Initial Commit

Initial Commit #2

Workflow file for this run

name: Build Orbit Looper
on:
push:
tags:
- 'v*'
workflow_dispatch:
env:
BUILD_TYPE: Release
jobs:
# ===========================================================================
# WINDOWS BUILD (x64)
# ===========================================================================
build-windows-x64:
if: true
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install WebView2 (NuGet)
run: |
Register-PackageSource -ProviderName NuGet -Name nugetRepository -Location https://www.nuget.org/api/v2 -Force
Install-Package Microsoft.Web.WebView2 -Scope CurrentUser -RequiredVersion 1.0.3485.44 -Source nugetRepository -Force
- name: Configure CMake
run: cmake -S . -B build -G "Visual Studio 17 2022" -A x64
- name: Build
run: cmake --build build --config ${{ env.BUILD_TYPE }} --parallel
- name: Upload VST3
uses: actions/upload-artifact@v4
with:
name: OrbitLooper-Windows-x64-VST3
path: build/OrbitLooper_artefacts/${{ env.BUILD_TYPE }}/VST3/
- name: Upload Standalone
uses: actions/upload-artifact@v4
with:
name: OrbitLooper-Windows-x64-Standalone
path: build/OrbitLooper_artefacts/${{ env.BUILD_TYPE }}/Standalone/
# ===========================================================================
# WINDOWS BUILD (ARM64)
# ===========================================================================
build-windows-arm64:
if: true
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install WebView2 (NuGet)
run: |
Register-PackageSource -ProviderName NuGet -Name nugetRepository -Location https://www.nuget.org/api/v2 -Force
Install-Package Microsoft.Web.WebView2 -Scope CurrentUser -RequiredVersion 1.0.3485.44 -Source nugetRepository -Force
- name: Configure CMake
run: cmake -S . -B build -G "Visual Studio 17 2022" -A ARM64 -DCMAKE_SYSTEM_PROCESSOR=arm64
- name: Verify ARM64 WebView2 mode
shell: pwsh
run: |
$vcxproj = Get-Content build/OrbitLooper_VST3.vcxproj -Raw
if ($vcxproj -notmatch 'JUCE_USE_WIN_WEBVIEW2_WITH_STATIC_LINKING=1') {
Write-Error "ARM64 build is expected to use static WebView2 loader in this project"
exit 1
}
if ($vcxproj -match 'build\\native\\x64\\WebView2LoaderStatic\.lib') {
Write-Error "ARM64 build is still resolving x64 WebView2LoaderStatic.lib"
exit 1
}
if ($vcxproj -notmatch 'build\\native\\arm64\\WebView2LoaderStatic\.lib') {
Write-Error "ARM64 WebView2LoaderStatic.lib was not selected"
exit 1
}
Write-Host "ARM64 verification passed: ARM64 static WebView2 loader is linked"
- name: Build
run: cmake --build build --config ${{ env.BUILD_TYPE }} --parallel
- name: Upload VST3
uses: actions/upload-artifact@v4
with:
name: OrbitLooper-Windows-ARM64-VST3
path: build/OrbitLooper_artefacts/${{ env.BUILD_TYPE }}/VST3/
- name: Upload Standalone
uses: actions/upload-artifact@v4
with:
name: OrbitLooper-Windows-ARM64-Standalone
path: build/OrbitLooper_artefacts/${{ env.BUILD_TYPE }}/Standalone/
# ===========================================================================
# MACOS BUILD
# ===========================================================================
build-macos:
if: true
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Configure CMake
run: cmake -S . -B build -G Xcode -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
- name: Build
run: cmake --build build --config ${{ env.BUILD_TYPE }} -- -quiet
- name: Upload VST3
uses: actions/upload-artifact@v4
with:
name: OrbitLooper-macOS-VST3
path: build/OrbitLooper_artefacts/${{ env.BUILD_TYPE }}/VST3/
- name: Upload AU
uses: actions/upload-artifact@v4
with:
name: OrbitLooper-macOS-AU
path: build/OrbitLooper_artefacts/${{ env.BUILD_TYPE }}/AU/
- name: Upload Standalone
uses: actions/upload-artifact@v4
with:
name: OrbitLooper-macOS-Standalone
path: build/OrbitLooper_artefacts/${{ env.BUILD_TYPE }}/Standalone/
# ===========================================================================
# LINUX BUILD (x64)
# ===========================================================================
build-linux-x64:
if: true
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential cmake git \
libasound2-dev libjack-jackd2-dev \
libfreetype6-dev libx11-dev libxrandr-dev libxinerama-dev \
libxcursor-dev libxcomposite-dev \
mesa-common-dev libglu1-mesa-dev \
libwebkit2gtk-4.1-dev libgtk-3-dev \
libcurl4-openssl-dev \
xvfb
- name: Configure CMake
run: cmake -S . -B build -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }}
- name: Build VST3
run: NO_AT_BRIDGE=1 LIBGL_ALWAYS_SOFTWARE=1 xvfb-run -a cmake --build build --target OrbitLooper_VST3 -j$(nproc)
- name: Build LV2 (with xvfb)
run: NO_AT_BRIDGE=1 LIBGL_ALWAYS_SOFTWARE=1 xvfb-run -a cmake --build build --target OrbitLooper_LV2 -j$(nproc)
- name: Build Standalone (with xvfb)
run: NO_AT_BRIDGE=1 LIBGL_ALWAYS_SOFTWARE=1 xvfb-run -a cmake --build build --target OrbitLooper_Standalone -j$(nproc)
- name: Upload VST3
uses: actions/upload-artifact@v4
with:
name: OrbitLooper-Linux-x64-VST3
path: build/OrbitLooper_artefacts/${{ env.BUILD_TYPE }}/VST3/
- name: Upload LV2
uses: actions/upload-artifact@v4
with:
name: OrbitLooper-Linux-x64-LV2
path: build/OrbitLooper_artefacts/${{ env.BUILD_TYPE }}/LV2/
- name: Upload Standalone
uses: actions/upload-artifact@v4
with:
name: OrbitLooper-Linux-x64-Standalone
path: build/OrbitLooper_artefacts/${{ env.BUILD_TYPE }}/Standalone/
# ===========================================================================
# LINUX BUILD (ARM64 — Raspberry Pi, etc.)
# ===========================================================================
build-linux-arm64:
if: true
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential cmake git \
libasound2-dev libjack-jackd2-dev \
libfreetype6-dev libx11-dev libxrandr-dev libxinerama-dev \
libxcursor-dev libxcomposite-dev \
mesa-common-dev libglu1-mesa-dev \
libwebkit2gtk-4.1-dev libgtk-3-dev \
libcurl4-openssl-dev \
xvfb
- name: Configure CMake
run: cmake -S . -B build -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }}
- name: Build VST3
run: NO_AT_BRIDGE=1 GDK_BACKEND=x11 LIBGL_ALWAYS_SOFTWARE=1 xvfb-run -a cmake --build build --target OrbitLooper_VST3 -j2
- name: Build LV2 (with xvfb)
run: NO_AT_BRIDGE=1 GDK_BACKEND=x11 LIBGL_ALWAYS_SOFTWARE=1 xvfb-run -a cmake --build build --target OrbitLooper_LV2 -j2
- name: Build Standalone (with xvfb)
run: NO_AT_BRIDGE=1 GDK_BACKEND=x11 LIBGL_ALWAYS_SOFTWARE=1 xvfb-run -a cmake --build build --target OrbitLooper_Standalone -j2
- name: Upload VST3
uses: actions/upload-artifact@v4
with:
name: OrbitLooper-Linux-ARM64-VST3
path: build/OrbitLooper_artefacts/${{ env.BUILD_TYPE }}/VST3/
- name: Upload LV2
uses: actions/upload-artifact@v4
with:
name: OrbitLooper-Linux-ARM64-LV2
path: build/OrbitLooper_artefacts/${{ env.BUILD_TYPE }}/LV2/
- name: Upload Standalone
uses: actions/upload-artifact@v4
with:
name: OrbitLooper-Linux-ARM64-Standalone
path: build/OrbitLooper_artefacts/${{ env.BUILD_TYPE }}/Standalone/
# ===========================================================================
# CREATE RELEASE (on tag push only)
# ===========================================================================
release:
if: true
needs: [build-windows-x64, build-windows-arm64, build-macos, build-linux-x64, build-linux-arm64]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts/
- name: Package archives
run: |
cd artifacts
for dir in */; do
name="${dir%/}"
zip -r "../${name}.zip" "$dir"
done
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: '*.zip'
generate_release_notes: true
draft: false
prerelease: false