init for 26/38 testing #170
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
| # 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 }}" |