Initial Commit #2
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |