Skip to content

docs: mark Smithery + punkpeye PR + Cline issue in directory tracker #104

docs: mark Smithery + punkpeye PR + Cline issue in directory tracker

docs: mark Smithery + punkpeye PR + Cline issue in directory tracker #104

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
release:
types: [published]
jobs:
test:
name: Test on ${{ matrix.os }}
# Only run the test suite on push / PR. Releases reuse whatever main-branch
# CI previously validated; we don't want a retroactively-tagged historical
# commit (with a since-fixed bug) to fail CI here.
if: github.event_name != 'release'
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Install ALSA dev headers (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y libasound2-dev
- name: Build
run: cargo build --release --verbose
- name: Unit tests
run: cargo test --release --verbose
- name: Inspect reference device
run: cargo run --release -- inspect devices/arturia/minilab3.json
- name: Catalogue is in sync with device JSONs
if: runner.os == 'Linux'
shell: bash
run: |
python3 scripts/regen_supported_devices.py
git diff --exit-code docs/SUPPORTED_DEVICES.md || {
echo '::error::docs/SUPPORTED_DEVICES.md is out of sync — run scripts/regen_supported_devices.py locally and commit.'
exit 1
}
- name: Version mirrors are in sync with Cargo.toml
if: runner.os == 'Linux'
run: python3 scripts/sync_version.py --check
release:
name: Release binary on ${{ matrix.target }}
if: github.event_name == 'release'
runs-on: ${{ matrix.os }}
permissions:
contents: write # needed by softprops/action-gh-release to attach assets
strategy:
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
suffix: linux-x86_64
- target: x86_64-pc-windows-msvc
os: windows-latest
suffix: windows-x86_64.exe
- target: aarch64-apple-darwin
os: macos-latest
suffix: macos-arm64
- target: x86_64-apple-darwin
os: macos-latest
suffix: macos-x86_64
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Install ALSA dev headers (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y libasound2-dev
- name: Build release
run: cargo build --release --target ${{ matrix.target }}
- name: Rename artifact
shell: bash
run: |
set -e
src=target/${{ matrix.target }}/release/osc-bridge
[ -f "${src}.exe" ] && src="${src}.exe"
cp "$src" "osc-bridge-${{ matrix.suffix }}"
- name: Upload to release
uses: softprops/action-gh-release@v2
with:
# Only upload the binary. Device JSONs + docs live in the repo
# itself — no need to duplicate hundreds of files as release assets
# (the GitHub API secondary rate limit hits hard past a few dozen).
files: |
osc-bridge-${{ matrix.suffix }}
npm-publish:
name: Publish npm wrapper
# Runs after every binary leg of `release` so the prebuilt binaries are
# attached before the wrapper goes live — the npm postinstall downloads
# them from the release. Needs the NPM_TOKEN repo secret.
if: github.event_name == 'release'
needs: release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
registry-url: 'https://registry.npmjs.org'
- name: Version mirrors are in sync with Cargo.toml
run: python3 scripts/sync_version.py --check
- name: Publish @roomi-fields/osc-bridge
working-directory: npm
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}