From 703e5e48736a955f67422671aad4e3f5a1321c7b Mon Sep 17 00:00:00 2001 From: Agent Date: Fri, 17 Jul 2026 11:30:28 -0400 Subject: [PATCH] ci: add GitHub Actions CI for web and pipeline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The repo had no .github/workflows/, so nothing ran on PRs. Add a CI workflow with two jobs built from the project's real commands: - web: npm ci, npx tsc --noEmit (no typecheck script exists), vitest, eslint, next build — scoped to web/ via working-directory. - pipeline: pip install -r requirements.txt, pytest tests/ (190 tests, hermetic — render/network paths are mocked). soundfile bundles libsndfile in its wheel, so no apt step is needed. House style: name CI, push+PR to main, concurrency with cancel-in-progress, contents:read, pinned actions with dep caching. Validated with actionlint. --- .github/workflows/ci.yml | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..3420346 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,48 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + web: + name: web · typecheck · test · lint · build + runs-on: ubuntu-latest + defaults: + run: + working-directory: web + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + cache-dependency-path: web/package-lock.json + - run: npm ci + # No `typecheck` script in web/package.json — call tsc directly. + - run: npx tsc --noEmit + - run: npm test + - run: npm run lint + - run: npm run build + + pipeline: + name: pipeline · pytest + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v6 + with: + python-version: '3.12' + cache: pip + - run: pip install -r requirements.txt + # soundfile bundles libsndfile in its wheel — no apt install needed. + - run: python -m pytest tests/ -q