-
Notifications
You must be signed in to change notification settings - Fork 0
46 lines (44 loc) · 2 KB
/
Copy pathci.yml
File metadata and controls
46 lines (44 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version: 24
- run: npm ci --ignore-scripts
- run: npm audit
- run: npm run format:check
- run: npm run lint
- run: npm run build
# PR-time dist validation (queue #107 class — validate at PR time, not
# only at release). Asserts each package's published tarball carries the
# four REQUIRED dual-format dist artifacts, present and non-empty, so an
# empty/missing-dist regression (the fs-http 0.1.1/0.1.2 empty-tarball
# incident) fails the PR check rather than surfacing only at publish.
# Shares scripts/validate-dist.mjs with publish.yml — the two gates
# cannot drift.
- run: npm run validate:dist
- run: npm run typecheck
- run: npm run lint:pkg
- run: npm run test:coverage
- run: npm run test:mutation
# Durable mutation-score artifact: each package's Stryker run writes
# JSON + HTML to packages/<pkg>/reports/mutation/. Retain them as a
# downloadable run artifact so the per-package score is retrievable
# after the run, not just ephemeral stdout. if: always() captures the
# report even when the break:90 gate fails (the score is the evidence).
- name: Upload mutation reports
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: mutation-reports
path: packages/*/reports/mutation/
retention-days: 30
if-no-files-found: warn