@@ -45,21 +45,33 @@ jobs:
4545 echo "SUB_ARCHES=$(jq -c 'map(.subarch) | unique' <<< ${ALL_BOARD_DATA})" >> "$GITHUB_ENV"
4646
4747 (cd && tar cphf - .cmake work zephyr-sdk-* | zstd > build-env.tar.zstd)
48+ tar cphf - cores/arduino/api | zstd > arduino-api.tar.zstd
4849
4950 - name : Archive build environment
5051 uses : actions/upload-artifact@v4
5152 with :
5253 name : build-env
5354 path : ~/build-env.tar.zstd
5455
55- package-core :
56- name : Build and package cores
56+ - name : Archive API snapshot
57+ uses : actions/upload-artifact@v4
58+ with :
59+ name : arduino-api
60+ path : arduino-api.tar.zstd
61+
62+ build-board :
63+ name : Build loader for ${{ matrix.board }}
5764 runs-on : ubuntu-latest
5865 needs :
5966 - build-env
6067 env :
6168 CCACHE_IGNOREOPTIONS : -specs=*
62- CORE_TAG : ${{ needs.build-env.outputs.CORE_TAG }}
69+ OUTPUT_ARTIFACT : binaries-${{ matrix.board }}-${{ needs.build-env.outputs.CORE_HASH }}
70+ strategy :
71+ matrix :
72+ include :
73+ ${{ fromJSON( needs.build-env.outputs.ALL_BOARD_DATA ) }}
74+ fail-fast : false
6375 steps :
6476 - uses : actions/download-artifact@v4
6577 with :
@@ -75,53 +87,86 @@ jobs:
7587 with :
7688 verbose : 1
7789
78- - name : Build variants
90+ - name : Build loader
7991 shell : bash
8092 run : |
81- ./extra/build_all .sh -f
93+ ./extra/build .sh ${{ matrix.board }}
8294
83- - name : Package cores
95+ - name : Package board binaries
8496 run : |
85- jq -cr '.[]' <<< ${ARTIFACTS} | while read -r artifact; do
86- ARTIFACT_NAME=ArduinoCore-${artifact}-${CORE_HASH}
87- ./extra/package_core.sh ${artifact} ${CORE_TAG} distrib/${ARTIFACT_NAME}.tar.bz2
88- done
97+ tar chf - firmwares/*${{ matrix.variant }}* variants/${{ matrix.variant }}/ | zstd > ${OUTPUT_ARTIFACT}.tar.zstd
8998
90- - name : Archive cores
99+ - name : Archive board binaries
91100 uses : actions/upload-artifact@v4
92101 with :
93- name : ArduinoCore-archives- ${{ env.CORE_HASH }}
94- path : distrib/*. tar.bz2
102+ name : ${{ env.OUTPUT_ARTIFACT }}
103+ path : ${{ env.OUTPUT_ARTIFACT }}. tar.zstd
95104
96- split -core :
97- name : Split off ${{ matrix.artifact }}
105+ package -core :
106+ name : Package ${{ matrix.artifact }}
98107 runs-on : ubuntu-latest
99108 needs :
100109 - build-env
101- - package-core
110+ - build-board
102111 env :
103- ALL_CORES_ARTIFACT : ArduinoCore-archives-${{ needs.build-env.outputs.CORE_HASH }}
104112 CORE_ARTIFACT : ArduinoCore-${{ matrix.artifact }}-${{ needs.build-env.outputs.CORE_HASH }}
113+ CORE_TAG : ${{ needs.build-env.outputs.CORE_TAG }}
105114 strategy :
106115 matrix :
107116 artifact : ${{ fromJSON( needs.build-env.outputs.ARTIFACTS ) }}
108117 steps :
118+ - uses : actions/checkout@v4
119+ with :
120+ submodules : ' recursive'
121+ fetch-depth : 0
122+ persist-credentials : false
123+ fetch-tags : true
124+
109125 - uses : actions/download-artifact@v4
110126 with :
111- name : ${{ env.ALL_CORES_ARTIFACT }}
127+ path : .
128+ name : arduino-api
129+
130+ - uses : actions/download-artifact@v4
131+ with :
132+ path : .
133+ pattern : binaries-*
134+ merge-multiple : true
135+
136+ - name : Package core
137+ run : |
138+ rm -f cores/arduino/api # remove broken symlink
139+ tar --use-compress-program=unzstd -xpf arduino-api.tar.zstd
140+ for f in binaries-*.tar.zstd ; do
141+ tar --use-compress-program=unzstd -xpf $f
142+ done
143+ ./extra/package_core.sh ${{ matrix.artifact }} ${CORE_TAG} distrib/${CORE_ARTIFACT}.tar.bz2
112144
113145 - uses : actions/upload-artifact@v4
114146 with :
115147 name : ${{ env.CORE_ARTIFACT }}
116- path : ${{ env.CORE_ARTIFACT }}.tar.bz2
148+ path : distrib/${{ env.CORE_ARTIFACT }}.tar.bz2
149+
150+ cleanup-build :
151+ name : Clean up intermediates
152+ runs-on : ubuntu-latest
153+ needs :
154+ - package-core
155+ steps :
156+ - uses : geekyeggo/delete-artifact@v5.1.0
157+ with :
158+ name : |
159+ arduino-api
160+ binaries-*
161+ build-env
162+ failOnError : false
117163
118164 test-core :
119165 name : Test ${{ matrix.subarch }}:${{ matrix.board }}
120166 runs-on : ubuntu-latest
121167 needs :
122168 - build-env
123169 - package-core
124- - split-core
125170 strategy :
126171 matrix :
127172 include :
@@ -277,12 +322,12 @@ jobs:
277322 permissions :
278323 id-token : write
279324 contents : read
280- env :
281- ALL_CORES_ARTIFACT : ArduinoCore-archives-${{ needs.build-env.outputs.CORE_HASH }}
282325 steps :
283326 - uses : actions/download-artifact@v4
284327 with :
285- name : ${{ env.ALL_CORES_ARTIFACT }}
328+ path : .
329+ pattern : ArduinoCore-*
330+ merge-multiple : true
286331
287332 - name : Configure AWS credentials
288333 uses : aws-actions/configure-aws-credentials@v4
@@ -296,16 +341,14 @@ jobs:
296341 aws s3 cp $f s3://${{ secrets.S3_BUCKET }}/
297342 done
298343
299- publish -json :
300- name : Publish jsons
344+ prepare -json :
345+ name : Prepare jsons
301346 runs-on : ubuntu-latest
302- if : ${{ github.repository == 'arduino/ArduinoCore-zephyr' }}
303347 needs :
304348 - build-env
305349 - package-core
306350 - test-core
307351 env :
308- ALL_CORES_ARTIFACT : ArduinoCore-archives-${{ needs.build-env.outputs.CORE_HASH }}
309352 CORE_TAG : ${{ needs.build-env.outputs.CORE_TAG }}
310353 CORE_HASH : ${{ needs.build-env.outputs.CORE_HASH }}
311354 ARTIFACTS : ${{ needs.build-env.outputs.ARTIFACTS }}
@@ -318,7 +361,9 @@ jobs:
318361
319362 - uses : actions/download-artifact@v4
320363 with :
321- name : ${{ env.ALL_CORES_ARTIFACT }}
364+ path : .
365+ pattern : ArduinoCore-*
366+ merge-multiple : true
322367
323368 - name : Prepare package index snippets
324369 run : |
@@ -333,18 +378,3 @@ jobs:
333378 with :
334379 name : ArduinoCore-zephyr-${{ env.CORE_TAG }}-jsons
335380 path : ArduinoCore-*-${{ env.CORE_TAG }}.json
336-
337- cleanup-artifacts :
338- runs-on : ubuntu-latest
339- needs :
340- - build-env
341- - package-core
342- - publish-core
343- - publish-json
344- if : ${{ !cancelled() }}
345- steps :
346- - name : Clean up intermediate artifacts
347- uses : geekyeggo/delete-artifact@v5.1.0
348- with :
349- name : ArduinoCore-archives-${{ needs.build-env.outputs.CORE_HASH }}
350- failOnError : false
0 commit comments