@@ -2,34 +2,104 @@ name: CI
22
33on :
44 push :
5- branches : [main]
5+ branches :
6+ - main
7+ - " codex/**"
68 pull_request :
9+ workflow_dispatch :
10+
11+ permissions :
12+ contents : read
13+
14+ concurrency :
15+ group : ci-${{ github.workflow }}-${{ github.ref }}
16+ cancel-in-progress : true
17+
18+ env :
19+ CI : " true"
20+ CRON_SECRET : ci-cron-secret-at-least-32-characters
21+ GUEST_JWT_SECRET : ci-guest-secret-at-least-32-characters
22+ NEXT_PUBLIC_SUPABASE_URL : http://127.0.0.1:54321
23+ NEXT_PUBLIC_SUPABASE_ANON_KEY : ci-anon-key
24+ SUPABASE_SERVICE_ROLE_KEY : ci-service-role-key
725
826jobs :
927 verify :
28+ name : Static checks, tests, and build
1029 runs-on : ubuntu-latest
11- timeout-minutes : 15
30+ timeout-minutes : 20
1231 steps :
13- - uses : actions/checkout@v4
32+ - name : Checkout
33+ uses : actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
1434
15- - uses : pnpm/action-setup@v4
35+ - name : Set up pnpm
36+ uses : pnpm/action-setup@b0f76dfb45f55f8421693e4803ac7bb65143bd34 # v6
1637
17- - uses : actions/setup-node@v4
38+ - name : Set up Node.js
39+ uses : actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
1840 with :
1941 node-version : 22
2042 cache : pnpm
2143
22- - name : Install
44+ - name : Install dependencies
2345 run : pnpm install --frozen-lockfile
2446
47+ - name : Lint
48+ run : pnpm lint
49+
2550 - name : Typecheck
2651 run : pnpm typecheck
2752
28- - name : Unit + golden agent tests
53+ - name : Unit and golden- agent tests
2954 run : pnpm test:unit
3055
31- - name : API contract tests
56+ - name : API and migration contracts
3257 run : pnpm test:contract
3358
3459 - name : No-auto-send guard
3560 run : pnpm verify:no-auto-send
61+
62+ - name : Production build
63+ run : pnpm build
64+
65+ secrets :
66+ name : Current-tree secret scan
67+ runs-on : ubuntu-latest
68+ timeout-minutes : 5
69+ steps :
70+ - name : Checkout
71+ uses : actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
72+ with :
73+ fetch-depth : 1
74+
75+ - name : Scan with Gitleaks 8.30.1
76+ uses : docker://ghcr.io/gitleaks/gitleaks:v8.30.1
77+ with :
78+ args : dir . --redact --no-banner
79+
80+ browser-smoke :
81+ name : Desktop and mobile browser smoke
82+ needs : verify
83+ runs-on : ubuntu-latest
84+ timeout-minutes : 15
85+ steps :
86+ - name : Checkout
87+ uses : actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
88+
89+ - name : Set up pnpm
90+ uses : pnpm/action-setup@b0f76dfb45f55f8421693e4803ac7bb65143bd34 # v6
91+
92+ - name : Set up Node.js
93+ uses : actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
94+ with :
95+ node-version : 22
96+ cache : pnpm
97+
98+ - name : Install dependencies
99+ run : pnpm install --frozen-lockfile
100+
101+ - name : Install Chromium
102+ run : pnpm exec playwright install --with-deps chromium
103+
104+ - name : Run smoke journeys
105+ run : pnpm test:e2e:smoke
0 commit comments