Files
Paul Lipscomb 7ecc718f5d Reorganize top-level directories with clearer naming convention
app -> app-desktop-macos, presets -> app-presets, server -> remote-server,
daw-config-reaper -> osc-config-daw, plugin-reaper-realearn -> plugin-reaper-relearn.
Updated run.py and presets.py path references accordingly.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-15 17:51:05 -04:00

193 lines
7.4 KiB
YAML

on:
create:
ref_type: tag
ref: 'v*'
workflow_dispatch:
name: Create release
jobs:
build-release-artifacts:
name: Build artifact
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- artifact: windows-x86_64
os: windows-2022
lib_file_name: helgobox.dll
extension_file_name: reaper_helgobox.dll
target: x86_64-pc-windows-msvc
profile: release
features: "playtime,egui,licensing"
macosx_deployment_target: ""
lib_file_name_dst: helgobox-windows-x86_64.dll
extension_file_name_dst: reaper_helgobox-windows-x86_64.dll
- artifact: windows-i686
os: windows-2022
lib_file_name: helgobox.dll
extension_file_name: reaper_helgobox.dll
target: i686-pc-windows-msvc
profile: release-llvm-out-of-memory-fix
features: "egui"
lib_file_name_dst: helgobox-windows-i686.dll
extension_file_name_dst: reaper_helgobox-windows-i686.dll
- artifact: macos-x86_64
os: macos-14
lib_file_name: libhelgobox.dylib
extension_file_name: libreaper_helgobox.dylib
target: x86_64-apple-darwin
profile: release-strip
features: "playtime,egui,licensing"
# The minimum version that I tested with is 10.13.
# Writing 10.7 builds, but it won't run, for example, on 10.14 (weird)!
# https://github.com/helgoboss/helgobox/issues/1384
macosx_deployment_target: "10.9"
lib_file_name_dst: helgobox-macos-x86_64.vst.dylib
extension_file_name_dst: reaper_helgobox-macos-x86_64.dylib
- artifact: macos-aarch64
os: macos-14
lib_file_name: libhelgobox.dylib
extension_file_name: libreaper_helgobox.dylib
target: aarch64-apple-darwin
profile: release-strip
features: "playtime,egui,licensing"
# First aarch64 macOS version
macosx_deployment_target: "11.0"
lib_file_name_dst: helgobox-macos-aarch64.vst.dylib
extension_file_name_dst: reaper_helgobox-macos-aarch64.dylib
- artifact: linux-x86_64
os: ubuntu-22.04
lib_file_name: libhelgobox.so
extension_file_name: libreaper_helgobox.so
target: x86_64-unknown-linux-gnu
profile: release-strip
features: "playtime,licensing"
macosx_deployment_target: ""
lib_file_name_dst: helgobox-linux-x86_64.so
extension_file_name_dst: reaper_helgobox-linux-x86_64.so
- artifact: linux-aarch64
os: ubuntu-22.04-arm
lib_file_name: libhelgobox.so
extension_file_name: libreaper_helgobox.so
target: aarch64-unknown-linux-gnu
profile: release-strip
features: "playtime,licensing"
macosx_deployment_target: ""
lib_file_name_dst: helgobox-linux-aarch64.so
extension_file_name_dst: reaper_helgobox-linux-aarch64.so
env:
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.macosx_deployment_target }}
steps:
# Prepare (all)
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/post-checkout
with:
playtime-engine-deploy-key: ${{ secrets.PRIVATE_PLAYTIME_CLIP_ENGINE_DEPLOY_KEY }}
license-processor-deploy-key: ${{ secrets.PRIVATE_HELGOBOSS_LICENSE_PROCESSOR_DEPLOY_KEY }}
- name: Install Rust
uses: dtolnay/rust-toolchain@1.84.0
with:
target: ${{ matrix.target }}
- name: Rust cache
uses: swatinem/rust-cache@v2
# Install OS dependencies (Linux/macOS only)
- name: Set up dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install nasm php libudev-dev libxdo-dev libx11-dev libxcursor-dev libxcb-dri2-0-dev libxcb-icccm4-dev libx11-xcb-dev mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev libspeechd-dev libgtk-3-dev
shell: sh
- name: Set up dependencies
run: brew install php
if: runner.os == 'macOS'
shell: sh
# Build (all)
- name: Build release
shell: sh
env:
PLAYTIME_AUTHENTICITY_SIGNING_KEY: "${{ secrets.PLAYTIME_AUTHENTICITY_SIGNING_KEY }}"
PLAYTIME_LICENSE_VERIFYING_KEY: "${{ secrets.PLAYTIME_LICENSE_VERIFYING_KEY }}"
PLAYTIME_PRESET_VERIFYING_KEY: "${{ secrets.PLAYTIME_PRESET_VERIFYING_KEY }}"
AWS_LC_SYS_CMAKE_BUILDER: "1"
run: cargo build --features "${{ matrix.features }}" --profile ${{ matrix.profile }} --target ${{ matrix.target }}
# Upload to artifact
- name: Upload plug-in and extension to artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact }}
path: |
target/${{ matrix.target }}/${{ matrix.profile }}/${{ matrix.lib_file_name }}
target/${{ matrix.target }}/${{ matrix.profile }}/${{ matrix.extension_file_name }}
target/${{ matrix.target }}/${{ matrix.profile }}/helgobox.pdb
target/${{ matrix.target }}/${{ matrix.profile }}/deps/libhelgobox.dylib.dSYM/
target/${{ matrix.target }}/${{ matrix.profile }}/libhelgobox-debug.so
# Windows x64: Upload PDB to Sentry
- name: Upload PDB
if: startsWith(matrix.artifact, 'windows-x86_64')
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
shell: powershell
run: |
# Install Sentry CLI
npm install -g @sentry/cli
# Upload
sentry-cli debug-files upload --auth-token $env:SENTRY_AUTH_TOKEN -o $env:SENTRY_ORG -p $env:SENTRY_PROJECT "target/${{ matrix.target }}/${{ matrix.profile }}/helgobox.pdb"
- name: Check if release exists
id: check_release
shell: bash
env:
GITHUB_TOKEN: ${{ github.TOKEN }}
run: |
if gh release view ${{ github.ref_name }} &> /dev/null; then
echo "RELEASE_EXISTS=true" >> "$GITHUB_OUTPUT"
else
echo "RELEASE_EXISTS=false" >> "$GITHUB_OUTPUT"
fi
- name: Create release
if: steps.check_release.outputs.RELEASE_EXISTS != 'true'
shell: bash
env:
GITHUB_TOKEN: ${{ github.TOKEN }}
run: |
gh release create ${{ github.ref_name }} --draft --prerelease --verify-tag
- name: Download artifacts from build job
uses: actions/download-artifact@v4
- name: Upload lib file
shell: bash
env:
GITHUB_TOKEN: ${{ github.TOKEN }}
run: |
mv "target/${{ matrix.target }}/${{ matrix.profile }}/${{ matrix.lib_file_name }}" "${{ matrix.lib_file_name_dst }}"
gh release upload ${{ github.ref_name }} --clobber "${{ matrix.lib_file_name_dst }}"
- name: Upload extension file
shell: bash
env:
GITHUB_TOKEN: ${{ github.TOKEN }}
run: |
mv "target/${{ matrix.target }}/${{ matrix.profile }}/${{ matrix.extension_file_name }}" "${{ matrix.extension_file_name_dst }}"
gh release upload ${{ github.ref_name }} --clobber "${{ matrix.extension_file_name_dst }}"