@@ -2,9 +2,17 @@ name: Runtime Tests
2
2
3
3
on :
4
4
workflow_dispatch :
5
- pull_request_target :
6
- types : [opened, reopened, closed, synchronize, labeled, unlabeled]
5
+ pull_request :
6
+ types : [opened, reopened, synchronize, labeled, unlabeled]
7
7
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'
8
16
- ' tests/**'
9
17
- ' cores/**'
10
18
- ' libraries/**'
@@ -19,14 +27,19 @@ concurrency:
19
27
group : tests-${{ github.event.pull_request.number || github.ref }}
20
28
cancel-in-progress : true
21
29
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
-
26
30
jobs :
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
+
27
41
gen-matrix :
28
42
name : Generate matrix
29
- if : github.event.action != 'closed'
30
43
runs-on : ubuntu-latest
31
44
outputs :
32
45
build-types : ${{ steps.set-matrix.outputs.build-types }}
59
72
60
73
call-build-tests :
61
74
name : Build
62
- uses : espressif/arduino-esp32/ .github/workflows/build_tests .yml@master
75
+ uses : ./ .github/workflows/tests_build .yml
63
76
needs : gen-matrix
64
- if : github.event.action != 'closed'
65
77
strategy :
66
78
matrix :
67
79
type : ${{ fromJson(needs.gen-matrix.outputs.build-types) }}
@@ -70,13 +82,15 @@ jobs:
70
82
type : ${{ matrix.type }}
71
83
chip : ${{ matrix.chip }}
72
84
85
+ # Wokwi tests are run after this workflow as it needs access to secrets
86
+
73
87
call-hardware-tests :
74
88
name : Hardware
75
- uses : espressif/arduino-esp32/ .github/workflows/hw .yml@master
89
+ uses : ./ .github/workflows/tests_hw .yml
76
90
needs : [gen-matrix, call-build-tests]
77
91
if : |
78
92
github.repository == 'espressif/arduino-esp32' &&
79
- (github.event_name != 'pull_request_target ' ||
93
+ (github.event_name != 'pull_request ' ||
80
94
contains(github.event.pull_request.labels.*.name, 'hil_test'))
81
95
strategy :
82
96
fail-fast : false
@@ -87,26 +101,10 @@ jobs:
87
101
type : ${{ matrix.type }}
88
102
chip : ${{ matrix.chip }}
89
103
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
-
106
104
# This job is disabled for now
107
105
call-qemu-tests :
108
106
name : QEMU
109
- uses : espressif/arduino-esp32/ .github/workflows/qemu .yml@master
107
+ uses : ./ .github/workflows/tests_qemu .yml
110
108
needs : [gen-matrix, call-build-tests]
111
109
if : false
112
110
strategy :
@@ -118,78 +116,39 @@ jobs:
118
116
type : ${{ matrix.type }}
119
117
chip : ${{ matrix.chip }}
120
118
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