@@ -3,28 +3,79 @@ name: Tests
33on :
44 workflow_call :
55 inputs :
6- url :
6+ build_id :
77 required : true
88 type : string
99
1010jobs :
11+ prepare-jobs :
12+ runs-on : ubuntu-latest
13+ strategy :
14+ matrix :
15+ machine :
16+ - iq-8275-evk
17+ - iq-9075-evk
18+ - qcm6490-idp
19+ - qcs615-adp-air
20+ - qcs6490-rb3gen2-core-kit
21+ - qcs8300-ride-sx
22+ - qcs9100-ride-sx
23+ - qrb2210-rb1-core-kit
24+ - qcom-armv8a
25+ - qcom-armv7a
26+ distro :
27+ - name : poky-altcfg
28+ - name : qcom-distro
29+ steps :
30+ - uses : actions/checkout@v4
31+ with :
32+ fetch-depth : 0
33+
34+ - name : ' Download build URLs'
35+ uses : actions/download-artifact@v4
36+ with :
37+ github-token : ${{ secrets.GITHUB_TOKEN }}
38+ run-id : ${{ inputs.build_id }}
39+ pattern : build-url*
40+
41+ - name : " Generate testjobs"
42+ run : |
43+ export BUILD_URL_FILE="$GITHUB_WORKSPACE/build-url_${{ matrix.machine }}_${{ matrix.distro.name }}/build-url_${{ matrix.machine }}_${{ matrix.distro.name }}"
44+ echo "${BUILD_URL_FILE}"
45+ if [ -f "$BUILD_URL_FILE" ]; then
46+ # install dependencies
47+ export BUILD_URL=$(cat "${BUILD_URL_FILE}")
48+ pip install jinja2
49+ if [ "${{ matrix.machine }}" = "qcom-armv8a" ]; then
50+ python3 ci/generatetests.py --templates ci/lava --os ${{ matrix.distro.name }} --device dragonboard-410c --build-url "${BUILD_URL}"
51+ python3 ci/generatetests.py --templates ci/lava --os ${{ matrix.distro.name }} --device dragonboard-820c --build-url "${BUILD_URL}"
52+ echo "MACHINE=dragonboard" >> $GITHUB_ENV
53+ else
54+ python3 ci/generatetests.py --templates ci/lava --os ${{ matrix.distro.name }} --device ${{ matrix.machine }} --build-url "${BUILD_URL}"
55+ echo "MACHINE=${{ matrix.machine }}" >> $GITHUB_ENV
56+ fi
57+ fi
58+ - name : ' Upload test jobs'
59+ uses : actions/upload-artifact@v4
60+ with :
61+ name : testjobs-${{ matrix.machine }}-${{ matrix.distro.name }}
62+ path : ${{ env.MACHINE}}*-${{ matrix.distro.name }}-*.yaml
63+
1164 prepare-job-list :
65+ needs : prepare-jobs
1266 runs-on : ubuntu-latest
1367 outputs :
1468 jobmatrix : ${{ steps.listjobs.outputs.jobmatrix }}
1569 steps :
16- - name : Clone repository
17- uses : actions/checkout @v4
70+ - name : ' Download job templates '
71+ uses : actions/download-artifact @v4
1872 with :
19- fetch-depth : 0
20- - name : Print trigger
21- run : |
22- echo "Triggered by ${{ github.event_name }}"
23- echo "Build URL: ${{ inputs.url }}"
73+ pattern : testjobs-*
74+
2475 - name : " List jobs"
2576 id : listjobs
2677 run : |
27- JOBFILES=$(find ci/lava/ -name *.yaml)
78+ JOBFILES=$(find . -name *.yaml)
2879 JOBFILES=$(echo "$JOBFILES" | sed -e "s/^/\"/" | sed -e "s/$/\",/" | tr -d "\n" | sed -e "s/.$//")
2980 JOBFILES="[${JOBFILES}]"
3081 J=$(jq -cn --argjson jobfiles "$JOBFILES" '{target: $jobfiles}')
@@ -35,34 +86,21 @@ jobs:
3586 needs : prepare-job-list
3687 runs-on : ubuntu-latest
3788 strategy :
38- fail-fast : false
3989 matrix : ${{ fromJson(needs.prepare-job-list.outputs.jobmatrix) }}
4090 steps :
41- - name : Clone repository
42- uses : actions/checkout @v4
91+ - name : ' Download job templates '
92+ uses : actions/download-artifact @v4
4393 with :
44- fetch-depth : 0
94+ pattern : testjobs-*
4595
46- - name : " Update test definition ${{ matrix.target }} "
96+ - name : ' Prepare output file name '
4797 run : |
48- TARGET=${{ matrix.target }}
49- FIND_PATH="${TARGET#*/}"
50- DEVICE_TYPE_PATH="${FIND_PATH%/*}"
51- DEVICE_TYPE="${DEVICE_TYPE_PATH#*/}"
52- BUILD_DOWNLOAD_URL="${{inputs.url}}"
53- FILE_NAME=$(echo "${FIND_PATH%.yaml}" | tr "/" "-")
54- sed -i "s|{{DEVICE_TYPE}}|${DEVICE_TYPE}|g" "${{ matrix.target }}"
55- sed -i "s|{{GITHUB_SHA}}|${GITHUB_SHA}|g" "${{ matrix.target }}"
56- sed -i "s|{{BUILD_DOWNLOAD_URL}}|${BUILD_DOWNLOAD_URL}|g" "${{ matrix.target }}"
57- sed -i "s|{{GITHUB_RUN_ID}}|${GITHUB_RUN_ID}|g" "${{ matrix.target }}"
58- cat "${{ matrix.target }}"
59- echo "JOB_NAME=${FILE_NAME}" >> $GITHUB_ENV
98+ OUTPUT_NAME=$(echo "${{ matrix.target }}" | sed "s|\/|-|g")
99+ echo "RESULT_NAME=${OUTPUT_NAME#??}" >> $GITHUB_ENV
60100
61101 - name : Submit ${{ matrix.target }}
62102 timeout-minutes : 20
63103 uses : foundriesio/lava-action@v8
64- env :
65- JOB_NAME : ${{ env.JOB_NAME }}
66104 with :
67105 lava_token : ${{ secrets.LAVATOKEN }}
68106 lava_url : ' lava.infra.foundries.io'
72110 fail_action_on_incomplete : false
73111 save_result_as_artifact : true
74112 save_job_details : true
75- result_file_name : " ${{ env.JOB_NAME }}"
113+ result_file_name : " ${{ env.RESULT_NAME }}"
76114
77115 publish-test-results :
78116 name : " Publish Tests Results"
@@ -93,11 +131,6 @@ jobs:
93131 echo $GITHUB_WORKSPACE
94132 ls -R $GITHUB_WORKSPACE
95133
96- - name : Publish Test Results
97- uses : EnricoMi/publish-unit-test-result-action@v2
98- with :
99- files : " ${{ github.workspace }}/artifacts/**/*.xml"
100-
101134 - name : Publish Test Job Details
102135 run : |
103136 for json_file in $(find ${{ github.workspace }} -name "test-job-*.json")
@@ -108,3 +141,10 @@ jobs:
108141 echo " * [Job $JOB_ID on $DEVICE_TYPE]($URL)"
109142 echo " * [Job $JOB_ID on $DEVICE_TYPE]($URL)" >> $GITHUB_STEP_SUMMARY
110143 done
144+
145+ - name : Publish Test Results
146+ uses : EnricoMi/publish-unit-test-result-action@v2
147+ with :
148+ files : " ${{ github.workspace }}/artifacts/**/*.xml"
149+ action_fail : true
150+ action_fail_on_inconclusive : true
0 commit comments