name: CI on: push: branches: [main] paths-ignore: - "docs/**" - "skills/**" - "design/**" - "**/*.md" pull_request: paths-ignore: - "docs/**" - "skills/**" - "design/**" - "**/*.md" workflow_dispatch: permissions: contents: read concurrency: group: ci-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: package: uses: ./.github/workflows/npm-package.yml check: # Windows-only breakage used to reach authors instead of this file — a render whose temporary # paths ran past the length a Windows path may be, a transcriber that opened a console window # per worker, a script that could not import itself, a file name that on one platform was the # whole path. One matrix rather than two jobs, so a step added here cannot be added to only # one of them. # # ffmpeg is installed on both matrix legs before tests run. Adding it to only one # of them would leave a red leg ambiguous between a product bug and a missing binary. runs-on: ${{ matrix.os }} # A test that never returns would otherwise hold a runner until the six-hour default. The # suite takes about a minute; this is the ceiling for a job that has stopped making progress, # not a budget the tests are meant to approach. timeout-minutes: 20 strategy: # Breakage on one platform is a different finding from breakage on the other, and cancelling # the second leg would throw away the half of the answer nobody has yet. fail-fast: false matrix: os: [ubuntu-latest, windows-latest] steps: - name: Checkout uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 - name: Set up pnpm uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 - name: Set up Node.js uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: 22 cache: pnpm - name: Install dependencies run: pnpm install --frozen-lockfile - name: Install ffmpeg on Linux if: runner.os == 'Linux' run: | sudo apt-get update sudo apt-get install -y ffmpeg - name: Install ffmpeg on Windows if: runner.os == 'Windows' run: choco install ffmpeg --yes --no-progress - name: Inspect the installed media tools run: | ffmpeg -version ffprobe -version - name: Type check run: pnpm check - name: Test run: pnpm test