Files

61 lines
1.5 KiB
YAML

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
ci:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Typecheck
run: pnpm typecheck
- name: Lint
run: pnpm lint
- name: Test
run: pnpm test
- name: Test coverage
run: pnpm test:coverage
- name: Build both targets
run: pnpm build:both
- name: Bundle size gate
run: pnpm bundle-size
- name: Validate MF manifest
run: |
MANIFEST=$(find dist/remote -name "mf-manifest.json" | head -1)
node -e "
const m = JSON.parse(require('fs').readFileSync('$MANIFEST','utf8'));
const paths = m.exposes.map(e => e.path);
const required = ['./OnlineBoard','./Schedule','./FlightsMap','./PopularRequests'];
const missing = required.filter(r => !paths.includes(r));
if (missing.length) { console.error('MISSING:', missing); process.exit(1); }
console.log('All 4 exposes verified:', paths);
"
- name: Security audit
run: pnpm audit 2>/dev/null || echo "Audit endpoint unavailable — manual review required"
continue-on-error: true