10
10
permissions :
11
11
contents : read
12
12
13
+ env :
14
+ # TESTS_BRANCH: "master" # Branch that will be checked out to run the tests
15
+ TESTS_BRANCH : " ci/hw_gitlab"
16
+
13
17
jobs :
14
18
get-artifacts :
15
19
name : Get required artifacts
22
26
ref : ${{ steps.set-ref.outputs.ref }}
23
27
base : ${{ steps.set-ref.outputs.base }}
24
28
targets : ${{ steps.set-ref.outputs.targets }}
25
- types : ${{ steps.set-ref.outputs.types }}
29
+ wokwi_types : ${{ steps.set-ref.outputs.wokwi_types }}
30
+ hw_types : ${{ steps.set-ref.outputs.hw_types }}
26
31
hw_tests_enabled : ${{ steps.set-ref.outputs.hw_tests_enabled }}
27
32
push_time : ${{ steps.set-ref.outputs.push_time }}
28
33
steps :
@@ -102,12 +107,14 @@ jobs:
102
107
push_time=""
103
108
fi
104
109
105
- types=$(cat artifacts/matrix_info/wokwi_types.txt | tr -cd "[:alpha:],[]'")
110
+ wokwi_types=$(cat artifacts/matrix_info/wokwi_types.txt | tr -cd "[:alpha:],[]'")
111
+ hw_types=$(cat artifacts/matrix_info/hw_types.txt | tr -cd "[:alpha:],[]'")
106
112
targets=$(cat artifacts/matrix_info/targets.txt | tr -cd "[:alnum:],[]'")
107
113
108
114
echo "base = $base"
109
115
echo "targets = $targets"
110
- echo "types = $types"
116
+ echo "wokwi_types = $wokwi_types"
117
+ echo "hw_types = $hw_types"
111
118
echo "pr_num = $pr_num"
112
119
echo "hw_tests_enabled = $hw_tests_enabled"
113
120
echo "push_time = $push_time"
@@ -145,7 +152,8 @@ jobs:
145
152
echo "pr_num=$pr_num" >> $GITHUB_OUTPUT
146
153
echo "base=$base" >> $GITHUB_OUTPUT
147
154
echo "targets=$targets" >> $GITHUB_OUTPUT
148
- echo "types=$types" >> $GITHUB_OUTPUT
155
+ echo "wokwi_types=$wokwi_types" >> $GITHUB_OUTPUT
156
+ echo "hw_types=$hw_types" >> $GITHUB_OUTPUT
149
157
echo "ref=$ref" >> $GITHUB_OUTPUT
150
158
echo "hw_tests_enabled=$hw_tests_enabled" >> $GITHUB_OUTPUT
151
159
echo "push_time=$push_time" >> $GITHUB_OUTPUT
@@ -189,7 +197,7 @@ jobs:
189
197
core.info(`${name} is ${state}`);
190
198
191
199
hardware-test :
192
- name : Hardware ${{ matrix.chip }} ${{ matrix.type }} tests
200
+ name : Internal Hardware Tests
193
201
if : |
194
202
(github.event.workflow_run.conclusion == 'success' ||
195
203
github.event.workflow_run.conclusion == 'failure' ||
@@ -198,15 +206,10 @@ jobs:
198
206
runs-on : ubuntu-latest
199
207
needs : get-artifacts
200
208
env :
201
- id : ${{ needs.get-artifacts.outputs.ref }}-${{ github.event.workflow_run.head_sha || github.sha }}-${{ matrix.chip }}-${{ matrix.type }}
209
+ id : ${{ needs.get-artifacts.outputs.ref }}-${{ github.event.workflow_run.head_sha || github.sha }}
202
210
permissions :
203
211
actions : read
204
212
statuses : write
205
- strategy :
206
- fail-fast : false
207
- matrix :
208
- type : ${{ fromJson(needs.get-artifacts.outputs.types) }}
209
- chip : ${{ fromJson(needs.get-artifacts.outputs.targets) }}
210
213
steps :
211
214
- name : Report pending
212
215
uses : actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
@@ -219,7 +222,7 @@ jobs:
219
222
core.debug(`repo: ${repo}`);
220
223
core.debug(`sha: ${sha}`);
221
224
const { context: name, state } = (await github.rest.repos.createCommitStatus({
222
- context: 'Runtime Tests / Hardware (${{ matrix.type }}, ${{ matrix.chip }}) / Hardware ${{ matrix.chip }} ${{ matrix.type }} tests (${{ github.event.workflow_run.event }} -> workflow_run)',
225
+ context: 'Runtime Tests / Internal Hardware Tests (${{ github.event.workflow_run.event }} -> workflow_run)',
223
226
owner: owner,
224
227
repo: repo,
225
228
sha: sha,
@@ -258,8 +261,7 @@ jobs:
258
261
if : ${{ steps.check-tests.outputs.enabled == 'true' }}
259
262
run : |
260
263
# A webhook to sync the repository is sent to GitLab when a commit is pushed to GitHub
261
- # In the worst case, it can take up to 5 minutes for the sync to complete
262
- # We wait for 6 minutes after the push to GitHub to be safe
264
+ # We wait for 10 minutes after the push to GitHub to be safe
263
265
264
266
echo "Ensuring GitLab sync has completed before triggering pipeline..."
265
267
@@ -278,8 +280,8 @@ jobs:
278
280
279
281
echo "Elapsed time since push: ${elapsed_minutes} minutes"
280
282
281
- if [ $elapsed_minutes -lt 6 ]; then
282
- wait_time=$(( (6 - elapsed_minutes) * 60 ))
283
+ if [ $elapsed_minutes -lt 10 ]; then
284
+ wait_time=$(( (10 - elapsed_minutes) * 60 ))
283
285
echo "Waiting ${wait_time} seconds for GitLab sync to complete..."
284
286
sleep $wait_time
285
287
else
@@ -302,30 +304,20 @@ jobs:
302
304
with :
303
305
ref : ${{ needs.get-artifacts.outputs.base || github.ref }}
304
306
305
- - name : Get test binaries
306
- if : ${{ steps.check-tests.outputs.enabled == 'true' }}
307
- uses : actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
308
- with :
309
- github-token : ${{ secrets.GITHUB_TOKEN }}
310
- run-id : ${{ github.event.workflow_run.id }}
311
- name : test-bin-${{ matrix.chip }}-${{ matrix.type }}
312
- path : test-binaries
313
-
314
307
- name : Trigger GitLab Pipeline and Download Artifacts
315
308
if : ${{ steps.check-tests.outputs.enabled == 'true' }}
316
309
uses :
digital-blueprint/[email protected]
317
310
id : gitlab-trigger
318
311
with :
319
312
host : ${{ secrets.GITLAB_URL }}
320
313
id : ${{ secrets.GITLAB_PROJECT_ID }}
321
- ref : ' ci/hw_gitlab'
322
- # ref: 'master'
314
+ ref : ${{ env.TESTS_BRANCH }}
323
315
trigger_token : ${{ secrets.GITLAB_TRIGGER_TOKEN }}
324
316
access_token : ${{ secrets.GITLAB_ACCESS_TOKEN }}
325
317
download_artifacts : ' true'
326
318
download_artifacts_on_failure : ' true'
327
319
download_path : ' ./gitlab-artifacts'
328
- variables : ' {"TEST_TYPE ":"${{ matrix.type }}","TEST_CHIP ":"${{ matrix.chip }}","PIPELINE_ID":"${{ env.id }}","BINARIES_RUN_ID":"${{ github.event.workflow_run.id }}","GITHUB_REPOSITORY":"${{ github.repository }}"}'
320
+ variables : ' {"TEST_TYPES ":"${{ needs.get-artifacts.outputs.hw_types }}","TEST_CHIPS ":"${{ needs.get-artifacts.outputs.targets }}","PIPELINE_ID":"${{ env.id }}","BINARIES_RUN_ID":"${{ github.event.workflow_run.id }}","GITHUB_REPOSITORY":"${{ github.repository }}"}'
329
321
330
322
- name : Process Downloaded Artifacts
331
323
if : ${{ always() && steps.check-tests.outputs.enabled == 'true' }}
@@ -356,7 +348,7 @@ jobs:
356
348
echo "No artifacts were downloaded from GitLab"
357
349
fi
358
350
359
- - name : Upload ${{ matrix.chip }} ${{ matrix.type }} hardware results as cache
351
+ - name : Upload hardware results as cache
360
352
uses : actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
361
353
if : steps.check-tests.outputs.enabled == 'true' && needs.get-artifacts.outputs.pr_num
362
354
with :
@@ -365,11 +357,11 @@ jobs:
365
357
tests/**/*.xml
366
358
tests/**/result_*.json
367
359
368
- - name : Upload ${{ matrix.chip }} ${{ matrix.type }} hardware results as artifacts
360
+ - name : Upload hardware results as artifacts
369
361
uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
370
362
if : always()
371
363
with :
372
- name : test-results-hw-${{ matrix.chip }}-${{ matrix.type }}
364
+ name : test-results-hw
373
365
overwrite : true
374
366
path : |
375
367
tests/**/*.xml
@@ -387,7 +379,7 @@ jobs:
387
379
core.debug(`repo: ${repo}`);
388
380
core.debug(`sha: ${sha}`);
389
381
const { context: name, state } = (await github.rest.repos.createCommitStatus({
390
- context: 'Runtime Tests / Hardware (${{ matrix.type }}, ${{ matrix.chip }}) / Hardware ${{ matrix.chip }} ${{ matrix.type }} tests (${{ github.event.workflow_run.event }} -> workflow_run)',
382
+ context: 'Runtime Tests / Internal Hardware Tests (${{ github.event.workflow_run.event }} -> workflow_run)',
391
383
owner: owner,
392
384
repo: repo,
393
385
sha: sha,
@@ -412,7 +404,7 @@ jobs:
412
404
strategy :
413
405
fail-fast : false
414
406
matrix :
415
- type : ${{ fromJson(needs.get-artifacts.outputs.types ) }}
407
+ type : ${{ fromJson(needs.get-artifacts.outputs.wokwi_types ) }}
416
408
chip : ${{ fromJson(needs.get-artifacts.outputs.targets) }}
417
409
steps :
418
410
- name : Report pending
0 commit comments