Skip to content

Commit 881a433

Browse files
authored
Merge branch 'main' into e2e_tests
2 parents 1addabc + 48de8c4 commit 881a433

File tree

11 files changed

+854
-5177
lines changed

11 files changed

+854
-5177
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: 'Setup Node.js and pnpm'
2+
description: 'Setup Node.js 22 and pnpm with dependency caching and installation'
3+
author: 'svelte-langgraph contributors'
4+
5+
inputs:
6+
frozen-lockfile:
7+
description: 'Use frozen lockfile for deterministic builds'
8+
required: false
9+
default: 'true'
10+
install-dependencies:
11+
description: 'Install dependencies after setup'
12+
required: false
13+
default: 'true'
14+
working-directory:
15+
description: 'Working directory for dependency installation'
16+
required: false
17+
default: '.'
18+
cache-key-suffix:
19+
description: 'Additional suffix for cache key (useful for matrix builds)'
20+
required: false
21+
default: ''
22+
23+
outputs:
24+
cache-hit:
25+
description: 'Whether dependencies were restored from cache'
26+
value: ${{ steps.setup-node.outputs.cache-hit }}
27+
28+
runs:
29+
using: 'composite'
30+
steps:
31+
- name: Install pnpm
32+
uses: pnpm/action-setup@v4
33+
with:
34+
# Version specified in package.json packageManager field
35+
run_install: false
36+
37+
- name: Setup Node.js
38+
id: setup-node
39+
uses: actions/setup-node@v4
40+
with:
41+
node-version: 22
42+
cache: 'pnpm'
43+
cache-dependency-path: pnpm-lock.yaml
44+
45+
- name: Install dependencies
46+
if: inputs.install-dependencies == 'true'
47+
shell: bash
48+
working-directory: ${{ inputs.working-directory }}
49+
run: |
50+
echo "🚀 Installing dependencies..."
51+
if [ "${{ inputs.frozen-lockfile }}" = "true" ]; then
52+
echo "📌 Using frozen lockfile for deterministic builds"
53+
pnpm install --frozen-lockfile
54+
else
55+
echo "🔄 Allowing lockfile updates"
56+
pnpm install --no-frozen-lockfile
57+
fi
58+
echo "✅ Dependencies installed successfully"
59+
60+
branding:
61+
icon: 'package'
62+
color: 'yellow'

.github/workflows/ci.yml

Lines changed: 22 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,8 @@ jobs:
5252
- name: Checkout
5353
uses: actions/checkout@v4
5454

55-
- name: Install pnpm
56-
uses: pnpm/action-setup@v4
57-
58-
- name: Setup Node.js
59-
uses: actions/setup-node@v4
60-
with:
61-
node-version: 22
62-
cache: 'pnpm'
63-
64-
- name: Install dependencies
65-
run: pnpm install --frozen-lockfile
55+
- name: Setup Node.js and pnpm
56+
uses: ./.github/actions/setup-node-pnpm
6657

6758
- name: Build dashboard (nx handles dependencies)
6859
run: pnpm nx run dashboard:build
@@ -114,15 +105,8 @@ jobs:
114105
steps:
115106
- name: Checkout
116107
uses: actions/checkout@v4
117-
- name: Install pnpm
118-
uses: pnpm/action-setup@v4
119-
- name: Setup Node.js
120-
uses: actions/setup-node@v4
121-
with:
122-
node-version: 22
123-
cache: 'pnpm'
124-
- name: Install dependencies
125-
run: pnpm install --frozen-lockfile
108+
- name: Setup Node.js and pnpm
109+
uses: ./.github/actions/setup-node-pnpm
126110
- name: Lint frontend
127111
run: pnpm nx run dashboard:lint
128112

@@ -141,15 +125,8 @@ jobs:
141125
cache-dependency-glob: "examples/langgraph-backend/uv.lock"
142126
- name: Set up Python
143127
run: uv python install
144-
- name: Install pnpm
145-
uses: pnpm/action-setup@v4
146-
- name: Setup Node.js
147-
uses: actions/setup-node@v4
148-
with:
149-
node-version: 22
150-
cache: 'pnpm'
151-
- name: Install dependencies
152-
run: pnpm install --frozen-lockfile
128+
- name: Setup Node.js and pnpm
129+
uses: ./.github/actions/setup-node-pnpm
153130
- name: Install backend dependencies
154131
working-directory: examples/langgraph-backend
155132
run: uv sync --dev
@@ -164,15 +141,8 @@ jobs:
164141
steps:
165142
- name: Checkout
166143
uses: actions/checkout@v4
167-
- name: Install pnpm
168-
uses: pnpm/action-setup@v4
169-
- name: Setup Node.js
170-
uses: actions/setup-node@v4
171-
with:
172-
node-version: 22
173-
cache: 'pnpm'
174-
- name: Install dependencies
175-
run: pnpm install --frozen-lockfile
144+
- name: Setup Node.js and pnpm
145+
uses: ./.github/actions/setup-node-pnpm
176146
- name: Typecheck frontend
177147
run: pnpm nx run dashboard:typecheck
178148

@@ -191,15 +161,8 @@ jobs:
191161
cache-dependency-glob: "examples/langgraph-backend/uv.lock"
192162
- name: Set up Python
193163
run: uv python install
194-
- name: Install pnpm
195-
uses: pnpm/action-setup@v4
196-
- name: Setup Node.js
197-
uses: actions/setup-node@v4
198-
with:
199-
node-version: 22
200-
cache: 'pnpm'
201-
- name: Install dependencies
202-
run: pnpm install --frozen-lockfile
164+
- name: Setup Node.js and pnpm
165+
uses: ./.github/actions/setup-node-pnpm
203166
- name: Install backend dependencies
204167
working-directory: examples/langgraph-backend
205168
run: uv sync --dev
@@ -214,15 +177,8 @@ jobs:
214177
steps:
215178
- name: Checkout
216179
uses: actions/checkout@v4
217-
- name: Install pnpm
218-
uses: pnpm/action-setup@v4
219-
- name: Setup Node.js
220-
uses: actions/setup-node@v4
221-
with:
222-
node-version: 22
223-
cache: 'pnpm'
224-
- name: Install dependencies
225-
run: pnpm install --frozen-lockfile
180+
- name: Setup Node.js and pnpm
181+
uses: ./.github/actions/setup-node-pnpm
226182
- name: Test frontend
227183
run: pnpm nx run dashboard:test
228184

@@ -241,15 +197,8 @@ jobs:
241197
cache-dependency-glob: "examples/langgraph-backend/uv.lock"
242198
- name: Set up Python
243199
run: uv python install
244-
- name: Install pnpm
245-
uses: pnpm/action-setup@v4
246-
- name: Setup Node.js
247-
uses: actions/setup-node@v4
248-
with:
249-
node-version: 22
250-
cache: 'pnpm'
251-
- name: Install dependencies
252-
run: pnpm install --frozen-lockfile
200+
- name: Setup Node.js and pnpm
201+
uses: ./.github/actions/setup-node-pnpm
253202
- name: Install backend dependencies
254203
working-directory: examples/langgraph-backend
255204
run: uv sync --dev
@@ -264,15 +213,8 @@ jobs:
264213
steps:
265214
- name: Checkout
266215
uses: actions/checkout@v4
267-
- name: Install pnpm
268-
uses: pnpm/action-setup@v4
269-
- name: Setup Node.js
270-
uses: actions/setup-node@v4
271-
with:
272-
node-version: 22
273-
cache: 'pnpm'
274-
- name: Install dependencies
275-
run: pnpm install --frozen-lockfile
216+
- name: Setup Node.js and pnpm
217+
uses: ./.github/actions/setup-node-pnpm
276218
- name: Lint package
277219
run: pnpm nx run svelte-langgraph:lint
278220

@@ -284,15 +226,8 @@ jobs:
284226
steps:
285227
- name: Checkout
286228
uses: actions/checkout@v4
287-
- name: Install pnpm
288-
uses: pnpm/action-setup@v4
289-
- name: Setup Node.js
290-
uses: actions/setup-node@v4
291-
with:
292-
node-version: 22
293-
cache: 'pnpm'
294-
- name: Install dependencies
295-
run: pnpm install --frozen-lockfile
229+
- name: Setup Node.js and pnpm
230+
uses: ./.github/actions/setup-node-pnpm
296231
- name: Typecheck package
297232
run: pnpm nx run svelte-langgraph:typecheck
298233

@@ -304,15 +239,8 @@ jobs:
304239
steps:
305240
- name: Checkout
306241
uses: actions/checkout@v4
307-
- name: Install pnpm
308-
uses: pnpm/action-setup@v4
309-
- name: Setup Node.js
310-
uses: actions/setup-node@v4
311-
with:
312-
node-version: 22
313-
cache: 'pnpm'
314-
- name: Install dependencies
315-
run: pnpm install --frozen-lockfile
242+
- name: Setup Node.js and pnpm
243+
uses: ./.github/actions/setup-node-pnpm
316244
- name: Test package
317245
run: pnpm nx run svelte-langgraph:test
318246

@@ -362,17 +290,8 @@ jobs:
362290
- name: Checkout
363291
uses: actions/checkout@v4
364292

365-
- name: Install pnpm
366-
uses: pnpm/action-setup@v4
367-
368-
- name: Setup Node.js
369-
uses: actions/setup-node@v4
370-
with:
371-
node-version: 22
372-
cache: 'pnpm'
373-
374-
- name: Install dependencies
375-
run: pnpm install --frozen-lockfile
293+
- name: Setup Node.js and pnpm
294+
uses: ./.github/actions/setup-node-pnpm
376295

377296
- name: Build dashboard (nx handles dependencies)
378297
run: pnpm nx run dashboard:build

0 commit comments

Comments
 (0)