29
29
- name : Check out code
30
30
uses : actions/checkout@v4
31
31
32
+ - name : Set up Node.js 22
33
+ uses : actions/setup-node@v4
34
+ with :
35
+ node-version : ' 22'
36
+
32
37
- name : Install dependencies
33
38
run : npm ci
34
39
59
64
- name : Check out code
60
65
uses : actions/checkout@v4
61
66
67
+ - name : Set up Node.js 22
68
+ uses : actions/setup-node@v4
69
+ with :
70
+ node-version : ' 22'
71
+
62
72
- name : Install dependencies
63
73
run : npm ci
64
74
@@ -81,14 +91,19 @@ jobs:
81
91
- name : Run pre-commit checks
82
92
run : SKIP=ruff-format pre-commit run --all-files
83
93
84
- ui-precommit-check :
94
+ ui-precommit-checks :
85
95
permissions :
86
96
contents : " read"
87
97
runs-on : ubuntu-latest
88
98
steps :
89
99
- name : Check out code
90
100
uses : actions/checkout@v4
91
101
102
+ - name : Set up Node.js 22
103
+ uses : actions/setup-node@v4
104
+ with :
105
+ node-version : ' 22'
106
+
92
107
- name : Install dependencies
93
108
run : npm ci
94
109
@@ -119,6 +134,11 @@ jobs:
119
134
- name : Check out code
120
135
uses : actions/checkout@v4
121
136
137
+ - name : Set up Node.js 22
138
+ uses : actions/setup-node@v4
139
+ with :
140
+ node-version : ' 22'
141
+
122
142
- name : Install dependencies
123
143
run : npm ci
124
144
@@ -149,6 +169,11 @@ jobs:
149
169
- name : Check out code
150
170
uses : actions/checkout@v4
151
171
172
+ - name : Set up Node.js 22
173
+ uses : actions/setup-node@v4
174
+ with :
175
+ node-version : ' 22'
176
+
152
177
- name : Install dependencies
153
178
run : npm ci
154
179
@@ -208,6 +233,105 @@ jobs:
208
233
`
209
234
})
210
235
236
+ ui-pr-preview :
237
+ needs : [ui-quality-checks, ui-precommit-checks, ui-unit-tests, ui-integration-tests]
238
+ permissions :
239
+ contents : write
240
+ pull-requests : write
241
+ issues : write
242
+ runs-on : ubuntu-latest
243
+ steps :
244
+ - name : Check out code
245
+ uses : actions/checkout@v3
246
+ with :
247
+ fetch-depth : 0
248
+
249
+ - name : Check if UI-related files changed
250
+ id : check-changes
251
+ run : |
252
+ BASE_BRANCH=${{ github.event.pull_request.base.ref }}
253
+ CHANGED_FILES=$(git diff --name-only origin/$BASE_BRANCH...HEAD)
254
+ SHOULD_BUILD=false
255
+
256
+ if echo "$CHANGED_FILES" | grep -q "^src/ui/"; then
257
+ echo "UI source files changed"
258
+ SHOULD_BUILD=true
259
+ fi
260
+
261
+ echo "should_build=$SHOULD_BUILD" >> $GITHUB_OUTPUT
262
+ echo "Should build: $SHOULD_BUILD"
263
+
264
+ - name : Install dependencies
265
+ if : steps.check-changes.outputs.should_build == 'true'
266
+ run : npm ci
267
+
268
+ - name : Build app to root
269
+ if : steps.check-changes.outputs.should_build == 'true'
270
+ id : build
271
+ run : |
272
+ # Export vars to ensure they are loaded before build
273
+ export $(grep -v '^#' .env.development | xargs)
274
+
275
+ PR_NUMBER=${{ github.event.pull_request.number }}
276
+ echo "pr_number=${PR_NUMBER}" >> $GITHUB_OUTPUT
277
+
278
+ # Set asset prefix and base path with PR number
279
+ ASSET_PREFIX=https://neuralmagic.github.io/guidellm/ui/pr/${PR_NUMBER}
280
+ USE_MOCK_DATA=true
281
+ BASE_PATH=/ui/pr/${PR_NUMBER}
282
+ GIT_SHA=${{ github.sha }}
283
+ export ASSET_PREFIX=${ASSET_PREFIX}
284
+ export BASE_PATH=${BASE_PATH}
285
+ export GIT_SHA=${GIT_SHA}
286
+ export USE_MOCK_DATA=${USE_MOCK_DATA}
287
+ npm run build
288
+
289
+ - name : Deploy to GitHub Pages
290
+ if : steps.check-changes.outputs.should_build == 'true'
291
+ uses : peaceiris/actions-gh-pages@v3
292
+ with :
293
+ github_token : ${{ secrets.GITHUB_TOKEN }}
294
+ publish_dir : ./src/ui/out
295
+ destination_dir : ui/pr/${{ steps.build.outputs.pr_number }}
296
+ keep_files : false
297
+ user_name : ${{ github.actor }}
298
+ user_email : ${{ github.actor }}@users.noreply.github.com
299
+ publish_branch : gh-pages
300
+ commit_message : ' build: Deploy preview build for PR #${{ github.event.pull_request.number }}'
301
+
302
+ - name : Set deployment url
303
+ if : steps.check-changes.outputs.should_build == 'true'
304
+ id : deploy
305
+ run : |
306
+ DEPLOY_URL=https://neuralmagic.github.io/guidellm/ui/pr/${{ steps.build.outputs.pr_number }}
307
+ echo "url=${DEPLOY_URL}" >> $GITHUB_OUTPUT
308
+
309
+ - name : Find PR comment
310
+ if : steps.check-changes.outputs.should_build == 'true'
311
+ uses : peter-evans/find-comment@v2
312
+ id : find-comment
313
+ with :
314
+ token : ${{ secrets.GITHUB_TOKEN }}
315
+ issue-number : ${{ github.event.pull_request.number }}
316
+ body-includes : ' <!-- pr-preview-comment -->'
317
+
318
+ - name : Post Deployment URL to PR
319
+ if : steps.check-changes.outputs.should_build == 'true'
320
+ uses : peter-evans/create-or-update-comment@v3
321
+ with :
322
+ token : ${{ secrets.GITHUB_TOKEN }}
323
+ comment-id : ${{ steps.find-comment.outputs.comment-id }}
324
+ issue-number : ${{ github.event.pull_request.number }}
325
+ edit-mode : replace
326
+ body : |
327
+ <!-- pr-preview-comment -->
328
+ 🎉 **Live Preview:** [Click here to view the live version](${{ steps.deploy.outputs.url }})
329
+ *Last updated: ${{ github.sha }}*
330
+
331
+ - name : Skip build notification
332
+ if : steps.check-changes.outputs.should_build == 'false'
333
+ run : echo "Skipping UI preview build - no relevant files changed"
334
+
211
335
build-and-push-container :
212
336
# Only build if the PR branch is local
213
337
if : github.event.pull_request.head.repo.full_name == github.repository
0 commit comments