@@ -2,9 +2,17 @@ name: Runtime Tests
22
33on :
44 workflow_dispatch :
5- pull_request_target :
6- types : [opened, reopened, closed, synchronize, labeled, unlabeled]
5+ pull_request :
6+ types : [opened, reopened, synchronize, labeled, unlabeled]
77 paths :
8+ - ' .github/workflows/tests*'
9+ - ' .github/scripts/*.sh'
10+ - ' !.github/scripts/check-cmakelists.sh'
11+ - ' !.github/scripts/find_*'
12+ - ' !.github/scripts/on-*.sh'
13+ - ' !.github/scripts/set_push_chunks.sh'
14+ - ' !.github/scripts/update-version.sh'
15+ - ' !.github/scripts/upload_py_tools.sh'
816 - ' tests/**'
917 - ' cores/**'
1018 - ' libraries/**'
@@ -19,14 +27,19 @@ concurrency:
1927 group : tests-${{ github.event.pull_request.number || github.ref }}
2028 cancel-in-progress : true
2129
22- # To avoid giving elevated permissions to the entire workflow, specify default permissions at the top level
23- # and then override them for specific jobs.
24- permissions : { contents: read }
25-
2630jobs :
31+ push-event-file :
32+ name : Push event file
33+ runs-on : ubuntu-latest
34+ steps :
35+ - name : Upload
36+ uses : actions/upload-artifact@v4
37+ with :
38+ name : event_file
39+ path : ${{ github.event_path }}
40+
2741 gen-matrix :
2842 name : Generate matrix
29- if : github.event.action != 'closed'
3043 runs-on : ubuntu-latest
3144 outputs :
3245 build-types : ${{ steps.set-matrix.outputs.build-types }}
5972
6073 call-build-tests :
6174 name : Build
62- uses : espressif/arduino-esp32/ .github/workflows/build_tests .yml@master
75+ uses : ./ .github/workflows/tests_build .yml
6376 needs : gen-matrix
64- if : github.event.action != 'closed'
6577 strategy :
6678 matrix :
6779 type : ${{ fromJson(needs.gen-matrix.outputs.build-types) }}
@@ -70,13 +82,15 @@ jobs:
7082 type : ${{ matrix.type }}
7183 chip : ${{ matrix.chip }}
7284
85+ # Wokwi tests are run after this workflow as it needs access to secrets
86+
7387 call-hardware-tests :
7488 name : Hardware
75- uses : espressif/arduino-esp32/ .github/workflows/hw .yml@master
89+ uses : ./ .github/workflows/tests_hw .yml
7690 needs : [gen-matrix, call-build-tests]
7791 if : |
7892 github.repository == 'espressif/arduino-esp32' &&
79- (github.event_name != 'pull_request_target ' ||
93+ (github.event_name != 'pull_request ' ||
8094 contains(github.event.pull_request.labels.*.name, 'hil_test'))
8195 strategy :
8296 fail-fast : false
@@ -87,26 +101,10 @@ jobs:
87101 type : ${{ matrix.type }}
88102 chip : ${{ matrix.chip }}
89103
90- call-wokwi-tests :
91- name : Wokwi
92- uses : espressif/arduino-esp32/.github/workflows/wokwi.yml@master
93- needs : [gen-matrix, call-build-tests]
94- if : github.event.action != 'closed'
95- strategy :
96- fail-fast : false
97- matrix :
98- type : ${{ fromJson(needs.gen-matrix.outputs.wokwi-types) }}
99- chip : ['esp32', 'esp32s2', 'esp32s3', 'esp32c3', 'esp32c6', 'esp32h2']
100- secrets :
101- WOKWI_CLI_TOKEN : ${{ secrets.WOKWI_CLI_TOKEN }}
102- with :
103- type : ${{ matrix.type }}
104- chip : ${{ matrix.chip }}
105-
106104 # This job is disabled for now
107105 call-qemu-tests :
108106 name : QEMU
109- uses : espressif/arduino-esp32/ .github/workflows/qemu .yml@master
107+ uses : ./ .github/workflows/tests_qemu .yml
110108 needs : [gen-matrix, call-build-tests]
111109 if : false
112110 strategy :
@@ -118,78 +116,39 @@ jobs:
118116 type : ${{ matrix.type }}
119117 chip : ${{ matrix.chip }}
120118
121- unit-test-results :
122- name : Unit Test Results
123- needs : [call-hardware-tests, call-wokwi-tests, call-qemu-tests]
124- if : always() && github.event_name == 'pull_request_target'
125- runs-on : ubuntu-latest
126- permissions :
127- checks : write
128- pull-requests : write
129- steps :
130- - name : Download and Extract HW Artifacts
131- uses : actions/download-artifact@v4
132- continue-on-error : true
133- with :
134- merge-multiple : true
135- pattern : tests-results-hw-*
136- path : ./results/hw
137-
138- - name : Download and Extract Wokwi Artifacts
139- uses : actions/download-artifact@v4
140- continue-on-error : true
141- with :
142- merge-multiple : true
143- pattern : tests-results-wokwi-*
144- path : ./results/wokwi
145-
146- - name : Download and Extract QEMU Artifacts
147- uses : actions/download-artifact@v4
148- continue-on-error : true
149- with :
150- merge-multiple : true
151- pattern : tests-results-qemu-*
152- path : ./results/qemu
153-
154- - name : Publish Unit Test Results
155- uses : EnricoMi/publish-unit-test-result-action@v2
156- with :
157- commit : ${{ github.event.pull_request.head.sha || github.sha }}
158- files : ./results/**/*.xml
159- clean :
160- name : Clean objects
161- needs : unit-test-results
162- if : always()
163- permissions :
164- actions : write
165- runs-on : ubuntu-latest
166- steps :
167- - name : Clean up caches
168- uses : actions/github-script@v7
169- with :
170- script : |
171- const ref = '${{ github.event.pull_request.number || github.ref }}';
172- const key_prefix = 'tests-' + ref + '-';
173-
174- if ('${{ github.event_name }}' == 'pull_request_target' && '${{ github.event.action }}' != 'closed') {
175- console.log('Skipping cache cleanup for open PR');
176- return;
177- }
178-
179- await github.paginate(github.rest.actions.getActionsCacheList, {
180- owner: context.repo.owner,
181- repo: context.repo.repo,
182- per_page: 100,
183- key: key_prefix
184- }).then(caches => {
185- if (caches) {
186- for (const cache of caches) {
187- console.log(`Deleting cache: ${cache.key}`);
188- github.rest.actions.deleteActionsCacheById({
189- owner: context.repo.owner,
190- repo: context.repo.repo,
191- cache_id: cache.id
192- });
193- }
194- }
195- });
119+ # clean:
120+ # name: Clean objects
121+ # if: always()
122+ # permissions:
123+ # actions: write
124+ # runs-on: ubuntu-latest
125+ # steps:
126+ # - name: Clean up caches
127+ # uses: actions/github-script@v7
128+ # with:
129+ # script: |
130+ # const ref = '${{ github.event.pull_request.number || github.ref }}';
131+ # const key_prefix = 'tests-' + ref + '-';
132+
133+ # if ('${{ github.event_name }}' == 'pull_request_target' && '${{ github.event.action }}' != 'closed') {
134+ # console.log('Skipping cache cleanup for open PR');
135+ # return;
136+ # }
137+
138+ # await github.paginate(github.rest.actions.getActionsCacheList, {
139+ # owner: context.repo.owner,
140+ # repo: context.repo.repo,
141+ # per_page: 100,
142+ # key: key_prefix
143+ # }).then(caches => {
144+ # if (caches) {
145+ # for (const cache of caches) {
146+ # console.log(`Deleting cache: ${cache.key}`);
147+ # github.rest.actions.deleteActionsCacheById({
148+ # owner: context.repo.owner,
149+ # repo: context.repo.repo,
150+ # cache_id: cache.id
151+ # });
152+ # }
153+ # }
154+ # });
0 commit comments