name: CI on: push: branches: [ master ] paths: - 'src/**' - 'xtask/**' - 'Cargo.toml' - 'Cargo.lock' - 'bundler.toml' - 'tools/**' pull_request: branches: [ master ] workflow_dispatch: # Target the self-hosted Rust/audio runner registered to the `musiikki` org. # # The runner is host-mode, so the rustup toolchain installed for the # `gitea-runner` user is used directly — nothing installs per run, and the cargo # registry cache stays warm between jobs. # # NOTE: `rust-audio` is an ORG-SCOPED label. A plugin cloned from this template # into a different org will not see that runner, and its jobs will queue # indefinitely rather than fail. Either register a runner advertising this label # for that org, or change `runs-on` below. jobs: build: name: Build runs-on: rust-audio steps: - uses: actions/checkout@v4 - name: Toolchain run: | cargo --version rustc --version echo "CARGO_HOME=${CARGO_HOME:?not set on this runner}" # Cheap and needs no toolchain, so it runs first: a rename that only # landed in half the files is worth catching before spending a build on it. - name: Branding consistency run: sh tools/check-branding.sh # The default build is CLAP-only; the vst3 feature is opt-in, so both # configurations have to be built to know the cfg gates are still correct. - name: Build (default, CLAP only) run: cargo build --release - name: Build (--features vst3) run: cargo build --release --features vst3 - name: Test run: cargo test --release --features vst3 # Proves the xtask bundler still works, which a plain `cargo build` does # not exercise — the bundle step is where bundler.toml and the crate name # have to agree. - name: Bundle run: cargo xtask bundle kolmekivi --release --features vst3