@@ -2,19 +2,41 @@ name: Build and run DUT tests
22on :
33 workflow_call :
44 inputs :
5- target_board :
6- description : " target board for tests"
5+ target :
76 type : string
87 required : true
8+ subset_config :
9+ type : string
10+ required : true
11+ subset :
12+ type : number
13+ required : true
914 run_tests :
1015 description : " "
1116 required : false
1217 type : boolean
1318 default : true
1419
1520jobs :
21+ parse_config :
22+ runs-on : ubuntu-24.04
23+ name : ${{inputs.subset}} - ${{inputs.target}} config
24+ outputs :
25+ max_subset : ${{steps.subsets.outputs.max_subset}}
26+ steps :
27+ - name : subsets
28+ id : subsets
29+ run : |
30+ echo '${{inputs.subset_config}}' > configuration.json
31+ cat configuration.json
32+ max_subsets=$(jq --arg target_name "${{inputs.target}}" '.[] | select(.platform == $target_name).subsets | tonumber' configuration.json)
33+ echo "max_subset=$max_subsets"
34+ echo "max_subset=$max_subsets" >> $GITHUB_OUTPUT
35+
1636 build_dut_tests :
17- name : " Build UT for (${{inputs.target_board}})"
37+ needs : [parse_config]
38+ if : ${{ inputs.subset <= needs.parse_config.outputs.max_subset }}
39+ name : " Build UT ${{inputs.subset}} - ${{inputs.target}}"
1840 runs-on : ubuntu-24.04
1941 container :
2042 image : ghcr.io/nrfconnect/sdk-sidewalk:main
4466 - name : Replace slash with underscore
4567 id : replace
4668 run : |
47- TARGET_BOARD=${{ inputs.target_board }}
69+ TARGET_BOARD=${{ inputs.target }}
4870 TARGET_BOARD=${TARGET_BOARD//\//_}
4971 echo "target_board=$TARGET_BOARD" >> $GITHUB_OUTPUT
5072
5981 - name : Build DUT test artifacts
6082 run : |
6183 source zephyr/zephyr-env.sh
62- west twister --test-config sidewalk/test_config.yaml --level="Github_tests" --platform ${{inputs.target_board }} --testsuite-root sidewalk --inline-logs --overflow-as-errors -vvv --prep-artifacts-for-testing --package-artifacts PACKAGE_ARTIFACTS. tar.bz2
84+ west twister --test-config sidewalk/test_config.yaml --level="Github_tests" --platform ${{inputs.target }} --testsuite-root sidewalk --inline-logs --overflow-as-errors -vvv --prep-artifacts-for-testing --package-artifacts PACKAGE_ARTIFACTS_${{ inputs.subset }}. tar.bz2 --subset ${{ inputs.subset }}/${{needs.parse_config.outputs.max_subset}}
6385
6486 - name : Print ccache stats
6587 run : |
@@ -68,16 +90,15 @@ jobs:
6890 - name : Save build artifacts
6991 uses : actions/upload-artifact@v4
7092 with :
71- path : PACKAGE_ARTIFACTS .tar.bz2
72- name : DUT_artifacts_${{steps.replace.outputs.target_board}}
93+ path : PACKAGE_ARTIFACTS_${{ inputs.subset }} .tar.bz2
94+ name : DUT_artifacts_${{steps.replace.outputs.target_board}}_${{ inputs.subset }}
7395 include-hidden-files : true
7496
7597 run_dut_ut :
76- needs : [build_dut_tests]
77-
78- if : ${{ fromJson(inputs.run_tests) }}
79- name : " Run on ${{inputs.target_board}}"
80- runs-on : [self-hosted, linux, x64, "${{inputs.target_board}}"]
98+ needs : [build_dut_tests, parse_config]
99+ if : ${{ fromJson(inputs.run_tests) }} and ${{ inputs.subset <= needs.parse_config.outputs.max_subset }}
100+ name : " Run UT ${{ inputs.subset }} - ${{inputs.target}}"
101+ runs-on : [self-hosted, linux, x64, "${{inputs.target}}"]
81102 container :
82103 image : ghcr.io/nrfconnect/sdk-sidewalk:main
83104 options : --cpus 2 --privileged
@@ -114,7 +135,7 @@ jobs:
114135 - name : Replace slash with underscore
115136 id : replace
116137 run : |
117- TARGET_BOARD=${{ inputs.target_board }}
138+ TARGET_BOARD=${{ inputs.target }}
118139 TARGET_BOARD=${TARGET_BOARD//\//_}
119140 echo "target_board=$TARGET_BOARD" >> $GITHUB_OUTPUT
120141
@@ -125,11 +146,11 @@ jobs:
125146 - name : Download artifacts
126147 uses : actions/download-artifact@v4
127148 with :
128- name : DUT_artifacts_${{steps.replace.outputs.target_board}}
149+ name : DUT_artifacts_${{steps.replace.outputs.target_board}}_${{ inputs.subset }}
129150
130151 - name : Unwrap artifacts
131152 run : |
132- tar -xf PACKAGE_ARTIFACTS .tar.bz2
153+ tar -xf PACKAGE_ARTIFACTS_${{ inputs.subset }} .tar.bz2
133154
134155 - name : Run Tests
135156 run : |
@@ -138,13 +159,13 @@ jobs:
138159
139160 - name : rename_twister_xml_report
140161 run : |
141- mv twister-out/twister.xml twister-out/${{steps.replace.outputs.target_board}}_twister.xml
162+ mv twister-out/twister.xml twister-out/${{steps.replace.outputs.target_board}}_${{ inputs.subset }} _twister.xml
142163
143164 - name : Upload test results
144165 uses : actions/upload-artifact@v4
145166 if : always()
146167 with :
147- name : tests-dut_result_${{steps.replace.outputs.target_board}}
168+ name : tests-dut_result_${{steps.replace.outputs.target_board}}_${{ inputs.subset }}
148169 path : |
149170 twister-out/${{steps.replace.outputs.target_board}}_twister.xml
150171 twister-out/**/handler.log
0 commit comments