-
Notifications
You must be signed in to change notification settings - Fork 0
77 lines (63 loc) · 2.43 KB
/
Copy pathci.yml
File metadata and controls
77 lines (63 loc) · 2.43 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
name: CI
on:
push:
branches: [main]
pull_request:
# Cancel superseded runs on the same ref so PRs don't queue stale jobs.
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# Least privilege: this workflow only reads the repository. Do not add
# write scopes here; a job that needs one should declare it locally.
permissions:
contents: read
env:
# Keep in sync with .node-version.
NODE_VERSION: 24.18.1
# Keep in sync with the root package.json "packageManager" field.
PNPM_VERSION: 11.18.0
jobs:
verify:
name: Install, lint, typecheck, test, build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- name: Setup pnpm
uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0
with:
version: ${{ env.PNPM_VERSION }}
- name: Setup Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ env.NODE_VERSION }}
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Lint
run: pnpm lint
- name: Typecheck
run: pnpm typecheck
- name: Unit test
run: pnpm test
- name: Build (packages, runner, web)
run: pnpm build
- name: Format check
run: pnpm format:check
# --- Extension points --------------------------------------------------
#
# EL-082 (Phase 8, "Complete CI") extends this workflow with:
#
# - A pinned Foundry toolchain (foundry-rs/foundry-toolchain@v1, pinned
# to an exact `version:`) and `forge test` against
# fixtures/demo-exploit, run after `pnpm install`.
# - Demo reproduction / snapshot check: scripts/reproduce-demo.sh
# followed by scripts/verify-demo.sh against artifacts/demo.
# - A Playwright smoke test job for apps/web: install browsers with
# `pnpm --filter @exploitlens/web exec playwright install --with-deps`,
# run the overview -> replay -> receipt smoke test, and upload the
# report/trace as a build artifact on failure.
#
# Add these as additional steps in this job, or as separate jobs that
# declare `needs: verify`, once the corresponding tasks land. No secret
# should be required for the default fixture.