codeburn/.github/workflows/ci.yml
2026-07-27 12:01:52 -07:00

59 lines
1.5 KiB
YAML

name: CI
on:
push:
branches: [main]
pull_request:
jobs:
core:
name: core (node ${{ matrix.node }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node: ['22.13.x', '24.x', '26.x']
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- name: Install from lockfile
run: npm ci
- name: Check workspace versions
run: npm run check:workspace-versions
- name: Typecheck core
run: npm run typecheck --workspace=@codeburn/core
- name: Test core
run: npm test --workspace=@codeburn/core
- name: Build core
run: npm run build --workspace=@codeburn/core
- name: Verify package contents
run: npm pack --workspace=@codeburn/core --dry-run
semgrep:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install Semgrep
run: pip install semgrep
- name: Run Semgrep bracket-assign guard
run: |
set -e
semgrep --config .semgrep/rules/no-bracket-assign-hot-paths.yml \
--strict --json \
packages/cli/src/providers/ packages/cli/src/parser.ts > semgrep-out.json
FINDINGS=$(jq '.results | length' semgrep-out.json)
if [ "$FINDINGS" -gt 0 ]; then
jq -r '.results[] | "::error file=\(.path),line=\(.start.line)::\(.extra.message)"' semgrep-out.json
exit 1
fi