Skip to content

init for 26/38 testing #170

init for 26/38 testing

init for 26/38 testing #170

Workflow file for this run

# Credit: Referenced from https://github.com/sudara/pamplejuce project
name: Test-Plugin
on: [push, pull_request, workflow_dispatch]
# When pushing new commits, cancel any running builds on that branch
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
env:
BUILD_TYPE: Debug
BUILD_DIR: build
DISPLAY: :0 # linux pluginval needs this
HOMEBREW_NO_INSTALL_CLEANUP: 1
defaults:
run:
shell: bash
jobs:
build_and_test:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false # show all errors for each platform (vs. cancel jobs on error)
matrix:
include:
# - name: Linux
# os: ubuntu-22.04
# pluginval-binary: ./pluginval
# extra-build-flags: --parallel 4
- name: macOS
os: macos-14
pluginval-binary: pluginval.app/Contents/MacOS/pluginval
extra-flags: -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DENABLE_VST2_COMPATIBILITY=OFF
extra-build-flags: --parallel 4
- name: Windows
os: windows-latest
pluginval-binary: ./pluginval.exe
extra-flags: -DENABLE_VST2_COMPATIBILITY=OFF
steps:
# Use clang on Linux so we don't introduce a 3rd compiler (Windows and macOS use MSVC and Clang)
- name: Set up Clang
if: runner.os == 'Linux'
uses: egor-tensin/setup-clang@v1
# This also starts up our "fake" display (Xvfb), needed for pluginval
- name: Install JUCE's Linux Deps
if: runner.os == 'Linux'
# Thanks to McMartin & co https://forum.juce.com/t/list-of-juce-dependencies-under-linux/15121/44
run: |
sudo apt-get update && sudo apt install libasound2-dev libx11-dev libxinerama-dev libxext-dev libfreetype6-dev libwebkit2gtk-4.0-dev libglu1-mesa-dev xvfb ninja-build freeglut3-dev
sudo /usr/bin/Xvfb $DISPLAY &
- name: Install macOS Deps
if: ${{ matrix.name == 'macOS' }}
run: brew install ninja osxutils
- name: Checkout entire project
uses: actions/checkout@v4
with:
lfs: true
fetch-depth: 1
- name: Configure Git to use HTTPS instead of SSH
run: |
git config --global url."https://github.com/".insteadOf "git@github.com:"
git config --global url."https://".insteadOf "git://"
- name: Initialize essential submodules
run: |
# Initialize top-level submodules required for build
git submodule update --init --recursive JUCE
git submodule update --init --recursive Modules/juce_murka
git submodule update --init Modules/m1-sdk
# Initialize only core m1-sdk dependencies (skip all examples)
cd Modules/m1-sdk
git submodule update --init --recursive libmach1spatial/deps/glm
git submodule update --init --recursive libmach1spatial/deps/pugixml
git submodule update --init --recursive libmach1spatial/deps/yaml
git submodule update --init --recursive libmach1spatial/deps/acutest
git submodule update --init --recursive libmach1spatial/deps/nlohmann
cd ../..
- name: Configure
if: ${{ matrix.name != 'Windows' }}
run: cmake -B ${{ env.BUILD_DIR }} -G Ninja -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE}} -DBUILD_VST3=ON -DBUILD_AU=ON -DBUILD_STANDALONE=OFF -DBUILD_VST=OFF -DBUILD_AAX=ON ${{ matrix.extra-flags }} .
- name: Configure (Windows)
if: ${{ matrix.name == 'Windows' }}
run: cmake -B ${{ env.BUILD_DIR }} -G "Visual Studio 17 2022" -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE}} -DBUILD_VST3=ON -DBUILD_STANDALONE=OFF -DBUILD_VST=OFF -DBUILD_AAX=ON ${{ matrix.extra-flags }} .
- name: Build
run: cmake --build ${{ env.BUILD_DIR }} --config ${{ env.BUILD_TYPE }} ${{ matrix.extra-build-flags }}
- name: Set additional env vars for next step
run: |
ARTIFACTS_PATH=${{ env.BUILD_DIR }}/M1-Panner_artefacts/${{ env.BUILD_TYPE }}
echo "ARTIFACTS_PATH=$ARTIFACTS_PATH" >> $GITHUB_ENV
echo "VST3_PATH=$ARTIFACTS_PATH/VST3/M1-Panner.vst3" >> $GITHUB_ENV
echo "AU_PATH=$ARTIFACTS_PATH/AU/M1-Panner.component" >> $GITHUB_ENV
echo "STANDALONE_PATH=$ARTIFACTS_PATH/Standalone/M1-Panner.app" >> $GITHUB_ENV
- name: Pluginval (Windows - Skip GUI)
if: ${{ matrix.name == 'Windows' }}
run: |
curl -LO "https://github.com/Tracktion/pluginval/releases/latest/download/pluginval_${{ matrix.name }}.zip"
7z x pluginval_${{ matrix.name }}.zip
${{ matrix.pluginval-binary }} --strictness-level 5 --repeat 2 --verbose --skip-gui-tests --validate "${{ env.VST3_PATH }}"
- name: Pluginval (macOS/Linux - Full Tests)
if: ${{ matrix.name != 'Windows' }}
run: |
curl -LO "https://github.com/Tracktion/pluginval/releases/latest/download/pluginval_${{ matrix.name }}.zip"
7z x pluginval_${{ matrix.name }}.zip
${{ matrix.pluginval-binary }} --strictness-level 5 --repeat 2 --verbose --validate "${{ env.VST3_PATH }}"