Repository navigation
Merge pull request #92 from pavelhov/codex/fix-opus-turn-output #243
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 | |
| # Triggers are deliberately unfiltered: every pull request and every push to | |
| # `main` or `development` runs this workflow. Development stages fixes before promotion, and | |
| # the single `ci` job below is the one check a GitHub ruleset should require. | |
| # A workflow-level `paths:` filter would leave that check Pending forever on | |
| # out-of-scope PRs, so there is none. | |
| on: | |
| pull_request: | |
| push: | |
| branches: [main, development] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # The one check name that means "CI passed". One job, one runner, no matrix: | |
| # shard and platform names change over time, and a ruleset needs a stable | |
| # check to require. Repository admins bypass it via ruleset bypass actors | |
| # (see MAINTAINERS.md); the job itself never special-cases anyone. | |
| ci: | |
| name: ci | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 | |
| with: | |
| # No job here pushes, so leaving a usable token in .git/config is | |
| # avoidable residue. | |
| persist-credentials: false | |
| - name: Setup Bun | |
| uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2 | |
| with: | |
| bun-version: 1.3.14 | |
| # The GUI install is NOT optional here, however unrelated it looks to the | |
| # test suite. Several files under tests/ import JSX-bearing modules from | |
| # gui/src (ProviderRail and friends), and React is declared only in | |
| # gui/package.json. Without this the suite dies on | |
| # `Cannot find module 'react/jsx-dev-runtime'`. | |
| - name: Install dependencies | |
| run: | | |
| bun install --frozen-lockfile | |
| cd gui | |
| bun install --frozen-lockfile | |
| - name: Typecheck | |
| run: bun x tsc --noEmit | |
| - name: Privacy scan | |
| run: bun run privacy:scan | |
| - name: GUI lint | |
| run: cd gui && bun run lint | |
| - name: GUI i18n lint | |
| run: cd gui && bun run lint:i18n | |
| # Isolated workers: GUI tests install happy-dom on globalThis. A shared-global | |
| # `bun test tests` lets a late React 19 update throw on window.event and poison | |
| # later files (red on GHA, green on a fast laptop). The runner retries only | |
| # failed files. | |
| - name: GUI tests | |
| run: cd gui && bun run test | |
| # Nor is the build optional. Tests that fetch the served dashboard read | |
| # the session bootstrap meta tags out of `gui/dist/index.html`, so without | |
| # a build the server has no index to serve and those assertions see an | |
| # empty string. The build must therefore precede the test suite. | |
| - name: GUI build | |
| run: cd gui && bun run build | |
| - name: Test suite | |
| run: bun run test:parallel | |
| - name: CLI help smoke | |
| run: bun run src/cli/index.ts help |