Skip to content

added profile

added profile #78

Workflow file for this run

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"