docs: mark Smithery + punkpeye PR + Cline issue in directory tracker #104
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: 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 }} |