Repository navigation
led event indicator #61
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: Build with DPF CMake action | |
| if: matrix.build_driver == 'dpf-action' | |
| 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: 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 | |
| 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" |