55 types : [opened, synchronize, reopened]
66
77jobs :
8- quality-checks :
9- runs-on : ubuntu-latest
10- strategy :
11- matrix :
12- python : ["3.9", "3.13"]
13- steps :
14- - uses : actions/checkout@v4
15- - name : Set up Python
16- uses : actions/setup-python@v5
17- with :
18- python-version : ${{ matrix.python }}
19- - name : Install dependencies
20- run : pip install tox
21- - name : Run quality checks
22- run : tox -e quality
23-
24- ui-quality-checks :
25- permissions :
26- contents : " read"
27- runs-on : ubuntu-latest
28- steps :
29- - name : Check out code
30- uses : actions/checkout@v3
31-
32- - name : Set up Node.js 22
33- uses : actions/setup-node@v4
34- with :
35- node-version : ' 22'
36-
37- - name : Install dependencies
38- run : npm ci
39-
40- - name : Run quality and typing checks
41- run : npm run lint
42-
43- type-checks :
44- runs-on : ubuntu-latest
45- strategy :
46- matrix :
47- python : ["3.9", "3.13"]
48- steps :
49- - uses : actions/checkout@v4
50- - name : Set up Python
51- uses : actions/setup-python@v5
52- with :
53- python-version : ${{ matrix.python }}
54- - name : Install dependencies
55- run : pip install tox
56- - name : Run quality checks
57- run : tox -e types
58-
59- ui-type-checks :
60- permissions :
61- contents : " read"
62- runs-on : ubuntu-latest
63- steps :
64- - name : Check out code
65- uses : actions/checkout@v3
66-
67- - name : Set up Node.js 22
68- uses : actions/setup-node@v4
69- with :
70- node-version : ' 22'
71-
72- - name : Install dependencies
73- run : npm ci
74-
75- - name : Run quality and typing checks
76- run : npm run type-check
77-
78- precommit-checks :
8+ test-precommit-checks :
799 runs-on : ubuntu-latest
8010 strategy :
8111 matrix :
@@ -101,245 +31,4 @@ jobs:
10131 - name : Run end-of-file-fixer only, verbose
10232 run : |
10333 pre-commit run end-of-file-fixer --files src/ui/.env.local --verbose --color always || true
104- echo "--- exit code: $?" # we expect 1 if it rewrote
105- - name : Run pre-commit checks
106- run : SKIP=ruff-format pre-commit run --all-files
107-
108- ui-precommit-checks :
109- permissions :
110- contents : " read"
111- runs-on : ubuntu-latest
112- steps :
113- - name : Check out code
114- uses : actions/checkout@v3
115-
116- - name : Set up Node.js 22
117- uses : actions/setup-node@v4
118- with :
119- node-version : ' 22'
120-
121- - name : Install dependencies
122- run : npm ci
123-
124- - name : Run pre-commit checks
125- run : npx husky run pre-commit
126-
127- unit-tests :
128- runs-on : ubuntu-latest
129- strategy :
130- matrix :
131- python : ["3.9", "3.13"]
132- steps :
133- - uses : actions/checkout@v4
134- - name : Set up Python
135- uses : actions/setup-python@v5
136- with :
137- python-version : ${{ matrix.python }}
138- - name : Install dependencies
139- run : pip install tox
140- - name : Run unit tests
141- run : tox -e test-unit -- -m "smoke or sanity"
142-
143- ui-unit-tests :
144- permissions :
145- contents : " read"
146- runs-on : ubuntu-latest
147- steps :
148- - name : Check out code
149- uses : actions/checkout@v3
150-
151- - name : Set up Node.js 22
152- uses : actions/setup-node@v4
153- with :
154- node-version : ' 22'
155-
156- - name : Install dependencies
157- run : npm ci
158-
159- - name : Run unit tests
160- run : npm run test:unit
161-
162- integration-tests :
163- runs-on : ubuntu-latest
164- strategy :
165- matrix :
166- python : ["3.9", "3.13"]
167- steps :
168- - uses : actions/checkout@v4
169- - name : Set up Python
170- uses : actions/setup-python@v5
171- with :
172- python-version : ${{ matrix.python }}
173- - name : Install dependencies
174- run : pip install tox
175- - name : Run integration tests
176- run : tox -e test-integration -- -m smoke
177-
178- ui-integration-tests :
179- permissions :
180- contents : " read"
181- runs-on : ubuntu-latest
182- steps :
183- - name : Check out code
184- uses : actions/checkout@v3
185-
186- - name : Set up Node.js 22
187- uses : actions/setup-node@v4
188- with :
189- node-version : ' 22'
190-
191- - name : Install dependencies
192- run : npm ci
193-
194- - name : Run integration tests
195- run : npm run test:integration
196-
197- build :
198- runs-on : ubuntu-latest
199- strategy :
200- matrix :
201- python : ["3.9"]
202- steps :
203- - name : Checkout code
204- uses : actions/checkout@v4
205- with :
206- fetch-depth : 0
207- - name : Set up Python
208- uses : actions/setup-python@v5
209- with :
210- python-version : ${{ matrix.python }}
211- - name : Install dependencies
212- run : pip install tox
213- - name : Build the package
214- run : |
215- export GUIDELLM_BUILD_TYPE=dev
216- export GUIDELLM_BUILD_ITERATION=${{ github.event.pull_request.number }}
217- tox -e build
218- - name : Upload build artifacts
219- id : artifact-upload
220- uses : actions/upload-artifact@v4
221- with :
222- name : build-artifacts
223- path : dist/*
224- compression-level : 6
225- if-no-files-found : error
226- retention-days : 30
227- - name : Generate GitHub App token
228- id : app-token
229- uses : actions/create-github-app-token@v1
230- with :
231- app-id : ${{ secrets.GH_NM_REDHAT_AUTOMATION_APP_ID }}
232- private-key : ${{ secrets.GH_NM_REDHAT_AUTOMATION_APP_PRIVATE_KEY }}
233- - name : Comment Install instructions
234- uses : actions/github-script@v7
235- with :
236- github-token : ${{ steps.app-token.outputs.token }}
237- script : |
238- github.rest.issues.createComment({
239- issue_number: context.issue.number,
240- owner: context.repo.owner,
241- repo: context.repo.repo,
242- body: `📦 **Build Artifacts Available**
243- The build artifacts (\`.whl\` and \`.tar.gz\`) have been successfully generated and are available for download: ${{ steps.artifact-upload.outputs.artifact-url }}.
244- They will be retained for **up to 30 days**.
245- `
246- })
247-
248- ui-pr-preview :
249- needs : [ui-quality-checks, ui-precommit-checks, ui-unit-tests, ui-integration-tests]
250- permissions :
251- contents : write
252- pull-requests : write
253- issues : write
254- runs-on : ubuntu-latest
255- steps :
256- - name : Check out code
257- uses : actions/checkout@v3
258- with :
259- fetch-depth : 0
260-
261- - name : Check if UI-related files changed
262- id : check-changes
263- run : |
264- BASE_BRANCH=${{ github.event.pull_request.base.ref }}
265- CHANGED_FILES=$(git diff --name-only origin/$BASE_BRANCH...HEAD)
266- SHOULD_BUILD=false
267-
268- if echo "$CHANGED_FILES" | grep -q "^src/ui/"; then
269- echo "UI source files changed"
270- SHOULD_BUILD=true
271- fi
272-
273- echo "should_build=$SHOULD_BUILD" >> $GITHUB_OUTPUT
274- echo "Should build: $SHOULD_BUILD"
275-
276- - name : Install dependencies
277- if : steps.check-changes.outputs.should_build == 'true'
278- run : npm ci
279-
280- - name : Build app to root
281- if : steps.check-changes.outputs.should_build == 'true'
282- id : build
283- run : |
284- # Export vars to ensure they are loaded before build
285- export $(grep -v '^#' .env.development | xargs)
286-
287- PR_NUMBER=${{ github.event.pull_request.number }}
288- echo "pr_number=${PR_NUMBER}" >> $GITHUB_OUTPUT
289-
290- # Set asset prefix and base path with PR number
291- ASSET_PREFIX=https://neuralmagic.github.io/guidellm/ui/pr/${PR_NUMBER}
292- USE_MOCK_DATA=true
293- BASE_PATH=/ui/pr/${PR_NUMBER}
294- GIT_SHA=${{ github.sha }}
295- export ASSET_PREFIX=${ASSET_PREFIX}
296- export BASE_PATH=${BASE_PATH}
297- export GIT_SHA=${GIT_SHA}
298- export USE_MOCK_DATA=${USE_MOCK_DATA}
299- npm run build
300-
301- - name : Deploy to GitHub Pages
302- if : steps.check-changes.outputs.should_build == 'true'
303- uses : peaceiris/actions-gh-pages@v3
304- with :
305- github_token : ${{ secrets.GITHUB_TOKEN }}
306- publish_dir : ./src/ui/out
307- destination_dir : ui/pr/${{ steps.build.outputs.pr_number }}
308- keep_files : false
309- user_name : ${{ github.actor }}
310- user_email : ${{ github.actor }}@users.noreply.github.com
311- publish_branch : gh-pages
312- commit_message : ' build: Deploy preview build for PR #${{ github.event.pull_request.number }}'
313-
314- - name : Set deployment url
315- if : steps.check-changes.outputs.should_build == 'true'
316- id : deploy
317- run : |
318- DEPLOY_URL=https://neuralmagic.github.io/guidellm/ui/pr/${{ steps.build.outputs.pr_number }}
319- echo "url=${DEPLOY_URL}" >> $GITHUB_OUTPUT
320-
321- - name : Find PR comment
322- if : steps.check-changes.outputs.should_build == 'true'
323- uses : peter-evans/find-comment@v2
324- id : find-comment
325- with :
326- token : ${{ secrets.GITHUB_TOKEN }}
327- issue-number : ${{ github.event.pull_request.number }}
328- body-includes : ' <!-- pr-preview-comment -->'
329-
330- - name : Post Deployment URL to PR
331- if : steps.check-changes.outputs.should_build == 'true'
332- uses : peter-evans/create-or-update-comment@v3
333- with :
334- token : ${{ secrets.GITHUB_TOKEN }}
335- comment-id : ${{ steps.find-comment.outputs.comment-id }}
336- issue-number : ${{ github.event.pull_request.number }}
337- edit-mode : replace
338- body : |
339- <!-- pr-preview-comment -->
340- 🎉 **Live Preview:** [Click here to view the live version](${{ steps.deploy.outputs.url }})
341- *Last updated: ${{ github.sha }}*
342-
343- - name : Skip build notification
344- if : steps.check-changes.outputs.should_build == 'false'
345- run : echo "Skipping UI preview build - no relevant files changed"
34+ echo "--- exit code: $?" # we expect 1 if it rewrote
0 commit comments