Repository navigation
added profile #78
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: Release | |
| on: | |
| push: | |
| tags: | |
| - "v*" | |
| permissions: | |
| contents: write | |
| concurrency: | |
| group: release-${{ github.ref }} | |
| cancel-in-progress: false | |
| jobs: | |
| build-vst3: | |
| 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 VST3 Release | |
| runner: ubuntu-24.04 | |
| platform: linux-x86_64 | |
| experimental: false | |
| run_tests: "1" | |
| strip: "1" | |
| - name: macOS Universal VST3 Release | |
| runner: macos-15 | |
| platform: macos-universal | |
| dpf_target: macos-10.15 | |
| experimental: true | |
| build_driver: dpf-action | |
| - name: Windows x86_64 VST3 Release | |
| 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: Resolve release version | |
| id: version | |
| shell: bash | |
| run: | | |
| version="${GITHUB_REF_NAME#v}" | |
| if [ -z "$version" ]; then | |
| echo "Unable to derive version from tag: $GITHUB_REF_NAME" >&2 | |
| exit 1 | |
| fi | |
| echo "version=$version" >> "$GITHUB_OUTPUT" | |
| - name: Build, test, and package (CMake) | |
| if: matrix.build_driver != 'dpf-action' | |
| shell: bash | |
| env: | |
| DOWNSPOUT_BUILD_DIR: build/release-${{ matrix.platform }} | |
| DOWNSPOUT_DIST_DIR: ${{ runner.temp }}/downspout-dist | |
| DOWNSPOUT_RELEASE_PLATFORM: ${{ matrix.platform }} | |
| DOWNSPOUT_VERSION: ${{ steps.version.outputs.version }} | |
| 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: ${{ steps.version.outputs.version }} | |
| DOWNSPOUT_BUILD_SIDECAR: "OFF" | |
| run: bash scripts/package-built-bundles.sh | |
| - name: Upload workflow artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: downspout-${{ steps.version.outputs.version }}-${{ matrix.platform }}-vst3 | |
| path: ${{ runner.temp }}/downspout-dist/* | |
| if-no-files-found: ${{ matrix.build_driver == 'dpf-action' && 'warn' || 'error' }} | |
| retention-days: 30 | |
| publish: | |
| name: Publish GitHub Release | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 10 | |
| needs: build-vst3 | |
| if: ${{ always() }} | |
| steps: | |
| - name: Check out release tag | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.ref }} | |
| fetch-depth: 1 | |
| - name: Download release artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: ${{ runner.temp }}/release-assets | |
| pattern: downspout-*-vst3 | |
| merge-multiple: true | |
| - name: Create GitHub release | |
| shell: bash | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| ASSET_DIR: ${{ runner.temp }}/release-assets | |
| run: | | |
| mapfile -t assets < <(find "$ASSET_DIR" -type f \( -name '*.zip' -o -name '*.sha256' \) | sort) | |
| if [ "${#assets[@]}" -lt 2 ]; then | |
| echo "Expected at least the Linux release zip and checksum, found ${#assets[@]}:" >&2 | |
| printf '%s\n' "${assets[@]}" >&2 | |
| exit 1 | |
| fi | |
| version="${GITHUB_REF_NAME#v}" | |
| if [ -z "$version" ]; then | |
| echo "Unable to derive version from tag: $GITHUB_REF_NAME" >&2 | |
| exit 1 | |
| fi | |
| if [[ ! -f "$ASSET_DIR/downspout-${version}-linux-x86_64-vst3.zip" || ! -f "$ASSET_DIR/downspout-${version}-linux-x86_64-vst3.zip.sha256" ]]; then | |
| echo "Linux release assets are missing; refusing to publish an incomplete release." >&2 | |
| exit 1 | |
| fi | |
| notes_file="$RUNNER_TEMP/release-notes.md" | |
| { | |
| echo "VST3 release builds for ${GITHUB_REF_NAME}." | |
| echo | |
| echo "Release assets:" | |
| for asset in "${assets[@]}"; do | |
| echo "- $(basename "$asset")" | |
| done | |
| echo | |
| echo "Included plugin bundles:" | |
| echo "- campione.vst3" | |
| echo "- bassgen.vst3" | |
| echo "- p_mix.vst3" | |
| echo "- e_mix.vst3" | |
| echo "- m_mix.vst3" | |
| echo "- t_mix.vst3" | |
| echo "- mixgen.vst3" | |
| echo "- loopdelay.vst3" | |
| echo "- lightverb.vst3" | |
| echo "- melgen.vst3" | |
| echo "- rift.vst3" | |
| echo "- orchid.vst3" | |
| echo "- ambo.vst3" | |
| echo "- drumgen.vst3" | |
| echo "- drumkit.vst3" | |
| echo "- cadence.vst3" | |
| echo "- arpgen.vst3" | |
| echo "- counterpointer.vst3" | |
| echo "- gremlin.vst3" | |
| echo "- gremlin_driver.vst3" | |
| echo "- ground.vst3" | |
| echo "- floozy.vst3" | |
| echo "- basilico.vst3" | |
| echo "- canticle.vst3" | |
| echo "- luma.vst3" | |
| echo "- paunchlad.vst3" | |
| echo "- lifeform.vst3" | |
| echo "- xoxolo.vst3" | |
| echo "- syrinx.vst3" | |
| echo "- tuney_vst.vst3" | |
| echo "- harmonic_atlas.vst3" | |
| echo "- conductor.vst3" | |
| echo "- drift.vst3" | |
| echo "- mnemosyne.vst3" | |
| echo "- polymeter.vst3" | |
| echo "- oracle.vst3" | |
| echo "- mosaic.vst3" | |
| echo "- resonance_garden.vst3" | |
| echo "- orbit.vst3" | |
| echo "- guardian.vst3" | |
| echo "- chipper.vst3" | |
| echo "- skream.vst3" | |
| echo "- worms.vst3" | |
| echo | |
| echo "Sidecar is currently Linux-only and is omitted from macOS and Windows release assets." | |
| echo "macOS and Windows release builds are best-effort and do not block Linux publication." | |
| echo | |
| echo "Each .sha256 asset contains the checksum for the matching zip." | |
| } > "$notes_file" | |
| gh release create "$GITHUB_REF_NAME" \ | |
| "${assets[@]}" \ | |
| --verify-tag \ | |
| --title "downspout $GITHUB_REF_NAME" \ | |
| --notes-file "$notes_file" |