Repository navigation
scala files #396
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: CI | |
| on: | |
| push: | |
| branches: | |
| - "**" | |
| pull_request: | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| bundle-lists: | |
| name: Bundle list consistency | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Check out source | |
| uses: actions/checkout@v4 | |
| # Cheap gate that runs before the 30-minute package builds. The bundle | |
| # lists are repeated by hand in four places, and the only enforcement was | |
| # package-release.sh's gate, which fails late: after configure, build, | |
| # ctest and staging. This catches the same drift in seconds. | |
| - name: Check bundle lists against plugin CMakeLists | |
| run: bash scripts/check-bundle-lists.sh | |
| - name: Syntax-check the shell scripts | |
| run: | | |
| for f in install.sh scripts/*.sh; do | |
| echo " $f" | |
| bash -n "$f" | |
| done | |
| # Session state is easy to get subtly wrong: WANT_STATE without | |
| # WANT_FULL_STATE compiles, looks like it saves, and actually records the | |
| # plugin's defaults every time. Nothing in the core test suites can see | |
| # it, so it is checked here. Reported rather than enforced while 6 plugins | |
| # still carry the bug -- see TODO.md. | |
| - name: Audit plugin session state | |
| continue-on-error: true | |
| run: bash scripts/check-plugin-state.sh --report | |
| release-package-build: | |
| name: ${{ matrix.name }} | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 30 | |
| continue-on-error: ${{ matrix.experimental }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - name: Linux x86_64 Release Package | |
| runner: ubuntu-24.04 | |
| platform: linux-x86_64 | |
| experimental: false | |
| run_tests: "1" | |
| strip: "1" | |
| - name: macOS Universal Release Package Probe | |
| runner: macos-15 | |
| platform: macos-universal | |
| dpf_target: macos-10.15 | |
| experimental: true | |
| build_driver: dpf-action | |
| - name: Windows x86_64 Release Package Probe | |
| runner: ubuntu-22.04 | |
| platform: windows-x86_64 | |
| dpf_target: win64 | |
| experimental: true | |
| build_driver: dpf-action | |
| steps: | |
| - name: Check out source | |
| uses: actions/checkout@v4 | |
| - name: Install Linux build dependencies | |
| if: matrix.build_driver != 'dpf-action' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y --no-install-recommends \ | |
| cmake \ | |
| g++ \ | |
| pkg-config \ | |
| libdbus-1-dev \ | |
| libgl1-mesa-dev \ | |
| libx11-dev \ | |
| libxcursor-dev \ | |
| libxext-dev \ | |
| libxrandr-dev \ | |
| libxrender-dev | |
| - name: Show toolchain versions | |
| shell: bash | |
| run: | | |
| cmake --version | |
| ctest --version | |
| - name: Build, test, and package (CMake) | |
| if: matrix.build_driver != 'dpf-action' | |
| shell: bash | |
| env: | |
| DOWNSPOUT_BUILD_DIR: build/release-ci-${{ matrix.platform }} | |
| DOWNSPOUT_DIST_DIR: ${{ runner.temp }}/downspout-dist | |
| DOWNSPOUT_RELEASE_PLATFORM: ${{ matrix.platform }} | |
| DOWNSPOUT_VERSION: ci-${{ github.run_number }} | |
| DOWNSPOUT_RUN_TESTS: "1" | |
| DOWNSPOUT_STRIP: "1" | |
| run: bash scripts/package-release.sh | |
| - name: Select POSIX-threads MinGW toolchain | |
| if: matrix.dpf_target == 'win64' | |
| shell: bash | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y --no-install-recommends g++-mingw-w64-x86-64 | |
| # Ubuntu ships both MinGW thread models and auto mode selects win32, | |
| # whose libstdc++ provides no std::thread/std::mutex. Installing here | |
| # and pinning with --set puts the link group in manual mode, which the | |
| # DPF action's own apt install cannot revert. | |
| sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix | |
| sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix | |
| x86_64-w64-mingw32-g++ -v 2>&1 | grep -i 'thread model' | |
| - name: Build with DPF CMake action | |
| if: matrix.build_driver == 'dpf-action' | |
| # Best effort: a plugin that fails to cross-compile must not sink the | |
| # whole platform. Packaging below ships whatever bundles did build and | |
| # annotates the run with what is missing. | |
| continue-on-error: true | |
| uses: distrho/dpf-cmake-action@v1 | |
| with: | |
| target: ${{ matrix.dpf_target }} | |
| dpf_path: third_party/DPF | |
| release: false | |
| extraargs: >- | |
| -DBUILD_TESTING=OFF | |
| -DDOWNSPOUT_BUILD_SIDECAR=OFF | |
| -DDOWNSPOUT_BUILD_AI_COORDINATOR=OFF | |
| - name: Package DPF action bundles | |
| if: matrix.build_driver == 'dpf-action' | |
| shell: bash | |
| env: | |
| DOWNSPOUT_BIN_DIR: bin | |
| DOWNSPOUT_DIST_DIR: ${{ runner.temp }}/downspout-dist | |
| DOWNSPOUT_RELEASE_PLATFORM: ${{ matrix.platform }} | |
| DOWNSPOUT_VERSION: ci-${{ github.run_number }} | |
| DOWNSPOUT_BUILD_SIDECAR: "OFF" | |
| run: bash scripts/package-built-bundles.sh | |
| - name: Upload CI package | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: downspout-${{ matrix.platform }}-vst3 | |
| path: ${{ runner.temp }}/downspout-dist/* | |
| if-no-files-found: ${{ matrix.build_driver == 'dpf-action' && 'warn' || 'error' }} | |
| retention-days: 14 |