Skip to content

Add GitHub Actions CI: build Rust plugin + Compose UI #1

Add GitHub Actions CI: build Rust plugin + Compose UI

Add GitHub Actions CI: build Rust plugin + Compose UI #1

Workflow file for this run

name: Build
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
rust-plugin:
name: Rust Plugin
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
defaults:
run:
working-directory: plugin
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
plugin/target
key: ${{ runner.os }}-cargo-${{ hashFiles('plugin/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-
- name: Install ALSA dev (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y libasound2-dev
- name: Build VST3 plugin
run: cargo build --release
- name: Build standalone
run: cargo build --release --features standalone --bin compose-vst-standalone
- name: Upload plugin artifact
uses: actions/upload-artifact@v4
with:
name: plugin-${{ matrix.os }}
path: |
plugin/target/release/libcompose_vst_plugin.so
plugin/target/release/libcompose_vst_plugin.dylib
plugin/target/release/compose_vst_plugin.dll
plugin/target/release/compose-vst-standalone*
if-no-files-found: ignore
compose-ui:
name: Compose UI
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
defaults:
run:
working-directory: ui
steps:
- uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Generate wrapper (if missing)
run: gradle wrapper
- name: Build
run: ./gradlew build
- name: Package
run: ./gradlew packageReleaseDistributionForCurrentOS
continue-on-error: true
- name: Upload UI artifact
uses: actions/upload-artifact@v4
with:
name: ui-${{ matrix.os }}
path: ui/build/compose/binaries/main-release/
if-no-files-found: ignore