name: deploy on: push: branches: [main] workflow_dispatch: permissions: contents: read pages: write id-token: write concurrency: group: pages cancel-in-progress: true jobs: build-deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # The app imports instrawave's host sources through a file: # dependency on the sibling checkout, which is the vault layout; the # lockfile pins that link, so the sibling has to exist before npm ci. # checkout can only write inside the workspace, hence the move. - uses: actions/checkout@v4 with: repository: proof-of-concept/instrawave path: _deps/instrawave - run: | mv _deps/instrawave ../instrawave rmdir _deps test -f ../instrawave/src/host/session.ts # --ignore-scripts skips the `webgpu` package's install step (prebuilt # Google Dawn) that instrawave's optional dependency would pull; only # its CLI and GPU tests use it, and the page build needs nothing from # it. - uses: actions/setup-node@v4 with: node-version: 24 - run: npm ci --ignore-scripts # The onset, feature, classifier, mix, and wav checks run on synthetic # audio and need no microphone and no GPU, so they gate the deploy. - run: npm test # configure-pages runs before the build on mochi, not after. The page # is built with relative URLs, so the base path it reports is not # needed here, but the ordering is the one that would work if it were. - uses: actions/configure-pages@v5 - run: npm run build - uses: actions/upload-pages-artifact@v3 with: path: dist - uses: actions/deploy-pages@v4