Setup repository to use Tessl #80
Workflow file for this run
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: | |
| pull_request: | |
| push: | |
| branches: | |
| - main | |
| - master | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| lint: | |
| name: Lint (Node 20) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Run lint | |
| run: npm run lint | |
| compatibility: | |
| name: Compatibility (Node ${{ matrix.node }}) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| node: | |
| - '18' | |
| - '20' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Run test suite | |
| run: npm test | |
| release-surface: | |
| name: Release Surface (Node 20) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| needs: | |
| - lint | |
| - compatibility | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Typecheck | |
| run: npm run typecheck | |
| - name: Check npm package payload | |
| run: npm run pack:check | |
| - name: Verify VS Code extension scaffold | |
| run: | | |
| node -e "const pkg=require('./packages/themis-vscode/package.json'); if (pkg.main !== './src/extension.js') throw new Error('Unexpected VS Code extension entrypoint'); if (!pkg.contributes?.views?.themis?.length) throw new Error('Missing Themis results view'); console.log('VS Code extension scaffold looks valid.');" | |
| - name: Generate human HTML report and agent payload | |
| run: | | |
| NO_COLOR=1 node bin/themis.js test --reporter html | |
| mkdir -p .themis/runs | |
| NO_COLOR=1 node bin/themis.js test --agent > .themis/runs/agent-result.json | |
| test -f __themis__/reports/report.html | |
| test -f .themis/runs/agent-result.json | |
| test -f .themis/runs/last-run.json | |
| test -f .themis/diffs/run-diff.json | |
| test -f .themis/diffs/contract-diff.json | |
| - name: Upload showcase artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: themis-showcase-node20 | |
| retention-days: 14 | |
| path: | | |
| __themis__/reports/report.html | |
| __themis__/reports/themis-bg.png | |
| __themis__/reports/themis-report.png | |
| .themis/runs/agent-result.json | |
| .themis/runs/last-run.json | |
| .themis/runs/failed-tests.json | |
| .themis/diffs/run-diff.json | |
| .themis/runs/run-history.json | |
| packages/themis-vscode/package.json | |
| packages/themis-vscode/README.md | |
| - name: Benchmark proof | |
| run: npm run benchmark | |
| - name: Upload benchmark artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: themis-benchmark-proof | |
| retention-days: 14 | |
| path: | | |
| .themis/benchmarks/benchmark-last.json | |
| .themis/benchmarks/migration-proof.json | |
| perf-gate: | |
| name: Perf Gate (Node 20) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| needs: | |
| - lint | |
| - compatibility | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Benchmark regression gate | |
| env: | |
| BENCH_MAX_AVG_MS: '2500' | |
| run: npm run benchmark:gate | |
| migration-proof: | |
| name: Migration Proof (Node 20) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| needs: | |
| - lint | |
| - compatibility | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Verify checked-in Jest/Vitest migration fixtures | |
| run: npm run proof:migration | |
| - name: Upload migration proof artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: themis-migration-proof | |
| retention-days: 14 | |
| path: | | |
| .themis/migration/fixtures/** | |
| themis-react-showcase: | |
| name: Themis React Showcase (Node 20) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| needs: | |
| - lint | |
| - compatibility | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Verify native Themis React fixture | |
| run: node scripts/verify-showcase-fixture.js themis | |
| - name: Upload Themis showcase summary | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: themis-react-showcase | |
| retention-days: 14 | |
| path: .themis/benchmarks/showcase-comparison/themis* | |
| react-showcase-perf: | |
| name: React Showcase Perf (Node 20) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| needs: | |
| - lint | |
| - compatibility | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Benchmark same-spec React showcase runners | |
| run: npm run benchmark:showcase | |
| - name: Publish runner benchmark summary | |
| run: cat .themis/benchmarks/showcase-comparison/perf-summary.md >> "$GITHUB_STEP_SUMMARY" | |
| - name: Upload React showcase perf artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: themis-react-showcase-perf | |
| retention-days: 14 | |
| path: | | |
| .themis/benchmarks/showcase-comparison/perf-summary.json | |
| .themis/benchmarks/showcase-comparison/perf-summary.md | |
| .themis/benchmarks/showcase-comparison/themis* | |
| .themis/benchmarks/showcase-comparison/jest* | |
| .themis/benchmarks/showcase-comparison/vitest* |