Skip to content

Commit 73ef43d

Browse files
committed
vibe
1 parent 8ea2758 commit 73ef43d

File tree

2 files changed

+129
-175
lines changed

2 files changed

+129
-175
lines changed

.github/workflows/_reusable-system-tests.yml

Lines changed: 83 additions & 175 deletions
Original file line numberDiff line numberDiff line change
@@ -43,51 +43,28 @@ on:
4343
jobs:
4444
system-test-public-api:
4545
if: ${{ inputs.run-public-api }}
46-
timeout-minutes: 25 # if this timeout gets too small, then split the tests
46+
timeout-minutes: 25
4747
name: "[sys] public api"
4848
runs-on: ${{ inputs.os }}
4949
steps:
50-
- uses: actions/checkout@v4
51-
- name: setup docker buildx
52-
id: buildx
53-
uses: docker/setup-buildx-action@v3
54-
with:
55-
driver: docker-container
56-
- name: setup python environment
57-
uses: actions/setup-python@v5
50+
- uses: ./.github/workflows/actions/common-setup
5851
with:
5952
python-version: ${{ inputs.python-version }}
60-
- name: expose github runtime for buildx
61-
uses: crazy-max/ghaction-github-runtime@v3
62-
# FIXME: Workaround for https://github.com/actions/download-artifact/issues/249
63-
- name: download docker images with retry
64-
uses: Wandalen/wretry.action@master
65-
with:
66-
action: actions/download-artifact@v4
67-
with: |
68-
pattern: docker-buildx-images-${{ runner.os }}-${{ github.sha }}-*
69-
path: /${{ runner.temp }}/build
70-
attempt_limit: 5
71-
attempt_delay: 1000
72-
73-
- name: install uv
74-
uses: astral-sh/setup-uv@v6
75-
with:
76-
version: ${{ inputs.uv-version }}
77-
enable-cache: false
78-
cache-dependency-glob: "**/public-api/requirements/ci.txt"
53+
uv-version: ${{ inputs.uv-version }}
54+
requirements-path: "**/public-api/requirements/ci.txt"
55+
runner-temp: ${{ runner.temp }}
7956
- name: load docker images
80-
run: make load-images local-src=/${{ runner.temp }}/build
57+
run: make load-images local-src=${{ runner.temp }}/build
8158
- name: show system version
8259
run: ./ci/helpers/show_system_versions.bash
83-
- name: install
60+
- name: install & test
8461
env:
8562
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
86-
run: ./ci/github/system-testing/public-api.bash install
87-
- name: test
88-
run: ./ci/github/system-testing/public-api.bash test
63+
run: |
64+
./ci/github/system-testing/public-api.bash install
65+
./ci/github/system-testing/public-api.bash test
8966
- name: upload failed tests logs
90-
if: ${{ failure() }}
67+
if: failure()
9168
uses: actions/upload-artifact@v4
9269
with:
9370
name: ${{ github.job }}_docker_logs
@@ -98,55 +75,36 @@ jobs:
9875

9976
system-test-swarm-deploy:
10077
if: ${{ inputs.run-swarm-deploy }}
101-
timeout-minutes: 30 # if this timeout gets too small, then split the tests
78+
timeout-minutes: 30
10279
name: "[sys] deploy simcore"
10380
runs-on: ${{ inputs.os }}
10481
steps:
105-
- uses: actions/checkout@v4
106-
- name: setup docker buildx
107-
id: buildx
108-
uses: docker/setup-buildx-action@v3
109-
with:
110-
driver: docker-container
111-
- name: setup python environment
112-
uses: actions/setup-python@v5
82+
- uses: ./.github/workflows/actions/common-setup
11383
with:
11484
python-version: ${{ inputs.python-version }}
115-
- name: expose github runtime for buildx
116-
uses: crazy-max/ghaction-github-runtime@v3
117-
# FIXME: Workaround for https://github.com/actions/download-artifact/issues/249
118-
- name: download docker images with retry
119-
uses: Wandalen/wretry.action@master
120-
with:
121-
action: actions/download-artifact@v4
122-
with: |
123-
pattern: docker-buildx-images-${{ runner.os }}-${{ github.sha }}-*
124-
path: /${{ runner.temp }}/build
125-
attempt_limit: 5
126-
attempt_delay: 1000
127-
- name: install uv
128-
uses: astral-sh/setup-uv@v6
129-
with:
130-
version: "0.6.x"
131-
enable-cache: false
132-
cache-dependency-glob: "**/swarm-deploy/requirements/ci.txt"
85+
uv-version: ${{ inputs.uv-version }}
86+
requirements-path: "**/swarm-deploy/requirements/ci.txt"
87+
runner-temp: ${{ runner.temp }}
13388
- name: load docker images
134-
run: make load-images local-src=/${{ runner.temp }}/build
89+
run: make load-images local-src=${{ runner.temp }}/build
13590
- name: show system version
13691
run: ./ci/helpers/show_system_versions.bash
137-
- name: install
138-
run: ./ci/github/system-testing/swarm-deploy.bash install
139-
- name: test
140-
run: ./ci/github/system-testing/swarm-deploy.bash test
141-
- name: dump services setting schemas
142-
run: export DOCKER_REGISTRY=local; export DOCKER_IMAGE_TAG=production; make settings-schema.json
92+
- name: install & test
93+
run: |
94+
./ci/github/system-testing/swarm-deploy.bash install
95+
./ci/github/system-testing/swarm-deploy.bash test
96+
- name: dump services settings schemas
97+
run: |
98+
export DOCKER_REGISTRY=local
99+
export DOCKER_IMAGE_TAG=production
100+
make settings-schema.json
143101
- name: upload services settings schemas
144102
uses: actions/upload-artifact@v4
145103
with:
146104
name: ${{ github.job }}_services_settings_schemas
147105
path: ./services/**/settings-schema.json
148106
- name: upload failed tests logs
149-
if: ${{ failure() }}
107+
if: failure()
150108
uses: actions/upload-artifact@v4
151109
with:
152110
name: ${{ github.job }}_docker_logs
@@ -157,159 +115,109 @@ jobs:
157115

158116
system-test-e2e:
159117
if: ${{ inputs.run-e2e }}
160-
timeout-minutes: 30 # if this timeout gets too small, then split the tests
118+
timeout-minutes: 30
161119
name: "[sys] e2e"
162120
runs-on: ${{ inputs.os }}
163121
steps:
164-
- uses: actions/checkout@v4
165-
- name: setup docker buildx
166-
id: buildx
167-
uses: docker/setup-buildx-action@v3
168-
with:
169-
driver: docker-container
170-
- name: setup python environment
171-
uses: actions/setup-python@v5
122+
- uses: ./.github/workflows/actions/common-setup
172123
with:
173124
python-version: ${{ inputs.python-version }}
125+
uv-version: ${{ inputs.uv-version }}
126+
requirements-path: "**/e2e/requirements/requirements.txt"
127+
runner-temp: ${{ runner.temp }}
174128
- uses: actions/[email protected]
175129
with:
176130
node-version: ${{ inputs.node-version }}
177131
cache: "npm"
178132
cache-dependency-path: "tests/e2e/package-lock.json"
179-
- name: expose github runtime for buildx
180-
uses: crazy-max/ghaction-github-runtime@v3
181-
# FIXME: Workaround for https://github.com/actions/download-artifact/issues/249
182-
- name: download docker images with retry
183-
uses: Wandalen/wretry.action@master
184-
with:
185-
action: actions/download-artifact@v4
186-
with: |
187-
pattern: docker-buildx-images-${{ runner.os }}-${{ github.sha }}-*
188-
path: /${{ runner.temp }}/build
189-
attempt_limit: 5
190-
attempt_delay: 1000
191-
- name: install uv
192-
uses: astral-sh/setup-uv@v6
193-
with:
194-
version: ${{ inputs.uv-version }}
195-
enable-cache: false
196-
cache-dependency-glob: "**/e2e/requirements/requirements.txt"
197133
- name: load docker images
198-
run: make load-images local-src=/${{ runner.temp }}/build
134+
run: make load-images local-src=${{ runner.temp }}/build
199135
- name: show system version
200136
run: ./ci/helpers/show_system_versions.bash
201-
- name: setup
202-
run: ./ci/github/system-testing/e2e.bash install
203-
- name: test
204-
run: ./ci/github/system-testing/e2e.bash test
205-
- name: dump docker logs
206-
if: ${{ !cancelled() }}
207-
run: ./ci/github/system-testing/e2e.bash dump_docker_logs
208-
- name: upload docker logs
209-
if: ${{ !cancelled() }}
210-
uses: actions/upload-artifact@v4
211-
with:
212-
name: ${{ github.job }}_docker_logs
213-
path: ./tests/e2e/test_failures
214-
- name: upload screenshots
137+
- name: install & test
138+
run: |
139+
./ci/github/system-testing/e2e.bash install
140+
./ci/github/system-testing/e2e.bash test
141+
- name: collect artifacts
215142
if: ${{ !cancelled() }}
216-
uses: actions/upload-artifact@v4
217-
with:
218-
name: ${{ github.job }}_screenshots
219-
path: tests/e2e/screenshots
220-
- name: upload e2e logs
143+
run: |
144+
./ci/github/system-testing/e2e.bash dump_docker_logs
145+
for artifact in docker_logs screenshots logs; do
146+
if [ -d "./tests/e2e/${artifact}" ]; then
147+
tar -czf "${artifact}.tar.gz" "./tests/e2e/${artifact}"
148+
fi
149+
done
150+
- name: upload artifacts
221151
if: ${{ !cancelled() }}
222152
uses: actions/upload-artifact@v4
223153
with:
224-
name: ${{ github.job }}_logs
225-
path: tests/e2e/logs
154+
name: ${{ github.job }}_artifacts
155+
path: |
156+
docker_logs.tar.gz
157+
screenshots.tar.gz
158+
logs.tar.gz
226159
- name: cleanup
227160
if: ${{ !cancelled() }}
228161
run: ./ci/github/system-testing/e2e.bash clean_up
229162

230163
system-test-e2e-playwright:
231164
if: ${{ inputs.run-e2e-playwright }}
232-
timeout-minutes: 30 # if this timeout gets too small, then split the tests
165+
timeout-minutes: 30
233166
name: "[sys] e2e-playwright"
234167
runs-on: ${{ inputs.os }}
235168
steps:
236-
- uses: actions/checkout@v4
237-
- name: setup docker buildx
238-
id: buildx
239-
uses: docker/setup-buildx-action@v3
240-
with:
241-
driver: docker-container
242-
- name: setup python environment
243-
uses: actions/setup-python@v5
169+
- uses: ./.github/workflows/actions/common-setup
244170
with:
245171
python-version: ${{ inputs.python-version }}
246-
- name: install uv
247-
uses: astral-sh/setup-uv@v6
248-
with:
249-
version: ${{ inputs.uv-version }}
250-
enable-cache: false
251-
cache-dependency-glob: "**/e2e-playwright/requirements/ci.txt"
252-
- name: expose github runtime for buildx
253-
uses: crazy-max/ghaction-github-runtime@v3
254-
- name: download docker images
255-
uses: actions/download-artifact@v4
256-
with:
257-
pattern: docker-buildx-images-${{ runner.os }}-${{ github.sha }}-*
258-
path: /${{ runner.temp }}/build
172+
uv-version: ${{ inputs.uv-version }}
173+
requirements-path: "**/e2e-playwright/requirements/ci.txt"
174+
runner-temp: ${{ runner.temp }}
259175
- name: load docker images
260-
run: make load-images local-src=/${{ runner.temp }}/build
176+
run: make load-images local-src=${{ runner.temp }}/build
261177
- name: prepare devenv
262178
run: make devenv
263179
- name: show system version
264180
run: ./ci/helpers/show_system_versions.bash
265-
- name: setup
266-
run: ./ci/github/system-testing/e2e-playwright.bash install
267-
- name: test
268-
run: ./ci/github/system-testing/e2e-playwright.bash test
269-
- name: dump docker logs
181+
- name: install & test
182+
run: |
183+
./ci/github/system-testing/e2e-playwright.bash install
184+
./ci/github/system-testing/e2e-playwright.bash test
185+
- name: collect artifacts
270186
if: ${{ !cancelled() }}
271-
run: ./ci/github/system-testing/e2e-playwright.bash dump_docker_logs
272-
- name: upload docker logs
187+
run: |
188+
./ci/github/system-testing/e2e-playwright.bash dump_docker_logs
189+
for dir in test_failures test-results; do
190+
if [ -d "./tests/e2e-playwright/${dir}" ]; then
191+
tar -czf "${dir}.tar.gz" "./tests/e2e-playwright/${dir}"
192+
fi
193+
done
194+
- name: upload artifacts
273195
if: ${{ !cancelled() }}
274196
uses: actions/upload-artifact@v4
275197
with:
276-
name: ${{ github.job }}_docker_logs
277-
path: ./tests/e2e-playwright/test_failures
278-
- name: upload tracing if failed
279-
if: ${{ !cancelled() }}
280-
uses: actions/upload-artifact@v4
281-
with:
282-
name: ${{ github.job }}_tracing
283-
path: tests/e2e-playwright/test-results
198+
name: ${{ github.job }}_artifacts
199+
path: |
200+
test_failures.tar.gz
201+
test-results.tar.gz
284202
285203
system-test-environment-setup:
286204
if: ${{ inputs.run-environment-setup }}
287-
timeout-minutes: 30 # if this timeout gets too small, then split the tests
205+
timeout-minutes: 30
288206
name: "[sys] environment setup"
289207
runs-on: ${{ inputs.os }}
290208
steps:
291-
- uses: actions/checkout@v4
292-
- name: setup docker buildx
293-
id: buildx
294-
uses: docker/setup-buildx-action@v3
295-
with:
296-
driver: docker-container
297-
- name: setup python environment
298-
uses: actions/setup-python@v5
209+
- uses: ./.github/workflows/actions/common-setup
299210
with:
300211
python-version: ${{ inputs.python-version }}
301-
- name: install uv
302-
uses: astral-sh/setup-uv@v6
303-
with:
304-
version: ${{ inputs.uv-version }}
305-
enable-cache: false
306-
cache-dependency-glob: "**/environment-setup/requirements/ci.txt"
212+
uv-version: ${{ inputs.uv-version }}
213+
requirements-path: "**/environment-setup/requirements/ci.txt"
214+
runner-temp: ${{ runner.temp }}
307215
- name: show system version
308216
run: ./ci/helpers/show_system_versions.bash
309-
- name: install
310-
run: ./ci/github/system-testing/environment-setup.bash install
311-
- name: test
312-
run: ./ci/github/system-testing/environment-setup.bash test
217+
- name: install & test
218+
run: |
219+
./ci/github/system-testing/environment-setup.bash install
220+
./ci/github/system-testing/environment-setup.bash test
313221
- name: cleanup
314222
if: ${{ !cancelled() }}
315223
run: ./ci/github/system-testing/environment-setup.bash clean_up
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: Common Setup
2+
description: Common setup steps for system tests
3+
4+
inputs:
5+
python-version:
6+
required: true
7+
description: "Python version to use"
8+
uv-version:
9+
required: true
10+
description: "UV version to use"
11+
requirements-path:
12+
required: true
13+
description: "Path to requirements file for UV cache"
14+
runner-temp:
15+
required: true
16+
description: "Path to runner temp directory"
17+
18+
runs:
19+
using: "composite"
20+
steps:
21+
- uses: actions/checkout@v4
22+
- name: setup docker buildx
23+
uses: docker/setup-buildx-action@v3
24+
with:
25+
driver: docker-container
26+
- name: setup python
27+
uses: actions/setup-python@v5
28+
with:
29+
python-version: ${{ inputs.python-version }}
30+
- name: expose github runtime
31+
uses: crazy-max/ghaction-github-runtime@v3
32+
- name: download docker images
33+
uses: Wandalen/wretry.action@master
34+
with:
35+
action: actions/download-artifact@v4
36+
with: |
37+
pattern: docker-buildx-images-${{ runner.os }}-${{ github.sha }}-*
38+
path: ${{ inputs.runner-temp }}/build
39+
attempt_limit: 5
40+
attempt_delay: 1000
41+
- name: install uv
42+
uses: astral-sh/setup-uv@v6
43+
with:
44+
version: ${{ inputs.uv-version }}
45+
enable-cache: false
46+
cache-dependency-glob: ${{ inputs.requirements-path }}

0 commit comments

Comments
 (0)