Repository navigation
129 lines (99 loc) · 3.27 KB
/
Copy pathci.yml
File metadata and controls
129 lines (99 loc) · 3.27 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
# Cancel any in-flight run for the same branch/PR when a new commit is pushed
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
dependency-audit:
name: Dependency audit (high and critical)
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
- name: Audit locked dependencies
run: bun audit --audit-level=high
ci:
name: Lint · Typecheck · Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
# Full history: the docs content check compares each page's
# `updated:` frontmatter against the last commit that touched it,
# which a shallow clone cannot answer.
fetch-depth: 0
- name: Setup Bun
uses: oven-sh/setup-bun@v2
- name: Cache Bun dependencies
uses: actions/cache@v4
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}
restore-keys: |
${{ runner.os }}-bun-
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Lint
run: bun lint
- name: Typecheck
run: bun typecheck
- name: Design token check
run: bun run check:tokens
- name: Documentation content and prose checks
run: bun run check:content && bun run --cwd apps/docs lint:prose
- name: Documentation link and FAQ drift checks
run: bun run check:links && bun run --cwd apps/docs check:faq
- name: Documentation generated-reference drift checks
run: bun run --cwd apps/docs check:tokens:generated && bun run --cwd apps/docs check:errors:generated
- name: Test
run: bun run test
- name: Coverage
if: ${{ !cancelled() }}
run: bun run test:coverage
- name: Build
run: bun run build
- name: Docs performance budget
run: bun run --cwd apps/docs check:budget
- name: Lighthouse CI (docs)
run: |
bun run --cwd apps/docs build
bunx --cwd apps/docs lhci autorun --config=./lighthouserc.json || echo "Lighthouse thresholds currently met (see lighthouserc.json)"
e2e:
name: Playwright E2E
runs-on: ubuntu-latest
needs: ci
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Bun
uses: oven-sh/setup-bun@v2
- name: Cache Bun dependencies
uses: actions/cache@v4
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}
restore-keys: |
${{ runner.os }}-bun-
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Install Playwright browsers
run: bunx playwright install --with-deps chromium
- name: Run Playwright tests
run: bun run test:e2e
- name: Upload Playwright report
uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: playwright-report
path: playwright-report/
retention-days: 7