Skip to content

Commit f3da280

Browse files
authored
Merge pull request #5312 from tannewt/ci_opt
Selectively build boards based on changed files
2 parents cce08c1 + a874043 commit f3da280

File tree

3 files changed

+124
-296
lines changed

3 files changed

+124
-296
lines changed

.github/workflows/build.yml

Lines changed: 30 additions & 239 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ on:
1515
jobs:
1616
test:
1717
runs-on: ubuntu-20.04
18+
outputs:
19+
arm-boards: ${{ steps.set-matrix.outputs.arm-boards }}
20+
riscv-boards: ${{ steps.set-matrix.outputs.riscv-boards }}
21+
xtensa-boards: ${{ steps.set-matrix.outputs.xtensa-boards }}
1822
steps:
1923
- name: Dump GitHub context
2024
env:
@@ -43,9 +47,6 @@ jobs:
4347
run: |
4448
gcc --version
4549
python3 --version
46-
- name: New boards check
47-
run: python3 -u ci_new_boards_check.py
48-
working-directory: tools
4950
- name: Duplicate USB VID/PID Check
5051
run: python3 -u -m tools.ci_check_duplicate_usb_vid_pid
5152
- name: Build and Validate Stubs
@@ -139,6 +140,29 @@ jobs:
139140
# setup.py sdist was run by 'make stubs'
140141
[ -z "$TWINE_USERNAME" ] || echo "Uploading dev release to PyPi"
141142
[ -z "$TWINE_USERNAME" ] || twine upload circuitpython-stubs/dist/*
143+
- uses: dorny/paths-filter@v2
144+
id: filter
145+
with:
146+
# Enable listing of files matching each filter.
147+
# Paths to files will be available in `${FILTER_NAME}_files` output variable.
148+
# Paths will be formatted as JSON array
149+
list-files: json
150+
151+
# Compare against this branch. (Ignored for PRs.)
152+
base: ${{ github.ref }}
153+
154+
# In this example all changed files are passed to the following action to do
155+
# some custom processing.
156+
filters: |
157+
changed:
158+
- '**'
159+
- name: "Set boards to build"
160+
id: set-matrix
161+
working-directory: tools
162+
env:
163+
CHANGED_FILES: ${{ steps.filter.outputs.changed_files }}
164+
run: |
165+
python3 -u ci_changed_board_list.py
142166
143167
mpy-cross-mac:
144168
runs-on: macos-10.15
@@ -203,205 +227,7 @@ jobs:
203227
strategy:
204228
fail-fast: false
205229
matrix:
206-
board:
207-
- "8086_commander"
208-
- "ADM_B_NRF52840_1"
209-
- "TG-Watch"
210-
- "adafruit_feather_rp2040"
211-
- "adafruit_itsybitsy_rp2040"
212-
- "adafruit_led_glasses_nrf52840"
213-
- "adafruit_macropad_rp2040"
214-
- "adafruit_neokey_trinkey_m0"
215-
- "adafruit_proxlight_trinkey_m0"
216-
- "adafruit_qt2040_trinkey"
217-
- "adafruit_qtpy_rp2040"
218-
- "adafruit_rotary_trinkey_m0"
219-
- "adafruit_slide_trinkey_m0"
220-
- "aloriumtech_evo_m51"
221-
- "aramcon2_badge"
222-
- "aramcon_badge_2019"
223-
- "arduino_mkr1300"
224-
- "arduino_mkrzero"
225-
- "arduino_nano_33_ble"
226-
- "arduino_nano_33_iot"
227-
- "arduino_nano_rp2040_connect"
228-
- "arduino_zero"
229-
- "bast_pro_mini_m0"
230-
- "bastble"
231-
- "bdmicro_vina_d21"
232-
- "bdmicro_vina_d51"
233-
- "bdmicro_vina_d51_pcb7"
234-
- "bless_dev_board_multi_sensor"
235-
- "blm_badge"
236-
- "bluemicro840"
237-
- "capablerobot_usbhub"
238-
- "catwan_usbstick"
239-
- "circuitbrains_basic_m0"
240-
- "circuitbrains_deluxe_m4"
241-
- "circuitplayground_bluefruit"
242-
- "circuitplayground_express"
243-
- "circuitplayground_express_crickit"
244-
- "circuitplayground_express_displayio"
245-
- "clue_nrf52840_express"
246-
- "cp32-m4"
247-
- "cp_sapling_m0"
248-
- "cp_sapling_m0_revb"
249-
- "cp_sapling_m0_spiflash"
250-
- "cytron_maker_pi_rp2040"
251-
- "datalore_ip_m4"
252-
- "datum_distance"
253-
- "datum_imu"
254-
- "datum_light"
255-
- "datum_weather"
256-
- "dynalora_usb"
257-
- "dynossat_edu_eps"
258-
- "dynossat_edu_obc"
259-
- "electronut_labs_blip"
260-
- "electronut_labs_papyr"
261-
- "escornabot_makech"
262-
- "espruino_pico"
263-
- "espruino_wifi"
264-
- "feather_bluefruit_sense"
265-
- "feather_m0_adalogger"
266-
- "feather_m0_basic"
267-
- "feather_m0_express"
268-
- "feather_m0_express_crickit"
269-
- "feather_m0_rfm69"
270-
- "feather_m0_rfm9x"
271-
- "feather_m0_supersized"
272-
- "feather_m4_can"
273-
- "feather_m4_express"
274-
- "feather_m7_1011"
275-
- "feather_mimxrt1011"
276-
- "feather_mimxrt1062"
277-
- "feather_nrf52840_express"
278-
- "feather_stm32f405_express"
279-
- "fluff_m0"
280-
- "gemma_m0"
281-
- "grandcentral_m4_express"
282-
- "hallowing_m0_express"
283-
- "hallowing_m4_express"
284-
- "hiibot_bluefi"
285-
- "huntercat_nfc"
286-
- "ikigaisense_vita"
287-
- "imxrt1010_evk"
288-
- "imxrt1020_evk"
289-
- "imxrt1060_evk"
290-
- "itsybitsy_m0_express"
291-
- "itsybitsy_m4_express"
292-
- "itsybitsy_nrf52840_express"
293-
- "jpconstantineau_encoderpad_rp2040"
294-
- "kicksat-sprite"
295-
- "loc_ber_m4_base_board"
296-
- "makerdiary_m60_keyboard"
297-
- "makerdiary_nrf52840_m2_devkit"
298-
- "makerdiary_nrf52840_mdk"
299-
- "makerdiary_nrf52840_mdk_usb_dongle"
300-
- "matrixportal_m4"
301-
- "meowbit_v121"
302-
- "meowmeow"
303-
- "metro_m0_express"
304-
- "metro_m4_airlift_lite"
305-
- "metro_m4_express"
306-
- "metro_m7_1011"
307-
- "metro_nrf52840_express"
308-
- "microbit_v2"
309-
- "mini_sam_m4"
310-
- "monster_m4sk"
311-
- "ndgarage_ndbit6"
312-
- "ndgarage_ndbit6_v2"
313-
- "neopixel_trinkey_m0"
314-
- "nfc_copy_cat"
315-
- "nice_nano"
316-
- "nucleo_f746zg"
317-
- "nucleo_f767zi"
318-
- "nucleo_h743zi_2"
319-
- "ohs2020_badge"
320-
- "openbook_m4"
321-
- "openmv_h7"
322-
- "particle_argon"
323-
- "particle_boron"
324-
- "particle_xenon"
325-
- "pca10056"
326-
- "pca10059"
327-
- "pca10100"
328-
- "pewpew10"
329-
- "pewpew_m4"
330-
- "picoplanet"
331-
- "pimoroni_interstate75"
332-
- "pimoroni_keybow2040"
333-
- "pimoroni_pga2040"
334-
- "pimoroni_picolipo_16mb"
335-
- "pimoroni_picolipo_4mb"
336-
- "pimoroni_picosystem"
337-
- "pimoroni_plasma2040"
338-
- "pimoroni_tiny2040"
339-
- "pitaya_go"
340-
- "pyb_nano_v2"
341-
- "pybadge"
342-
- "pyboard_v11"
343-
- "pycubed"
344-
- "pycubed_mram"
345-
- "pygamer"
346-
- "pyportal"
347-
- "pyportal_titano"
348-
- "pyruler"
349-
- "qtpy_m0"
350-
- "qtpy_m0_haxpress"
351-
- "raspberry_pi_pico"
352-
- "raytac_mdbt50q-db-40"
353-
- "raytac_mdbt50q-rx"
354-
- "robohatmm1_m4"
355-
- "sam32"
356-
- "same54_xplained"
357-
- "seeeduino_wio_terminal"
358-
- "seeeduino_xiao"
359-
- "sensebox_mcu"
360-
- "serpente"
361-
- "shirtty"
362-
- "silicognition-m4-shim"
363-
- "simmel"
364-
- "snekboard"
365-
- "sparkfun_lumidrive"
366-
- "sparkfun_micromod_rp2040"
367-
- "sparkfun_nrf52840_micromod"
368-
- "sparkfun_nrf52840_mini"
369-
- "sparkfun_pro_micro_rp2040"
370-
- "sparkfun_qwiic_micro_no_flash"
371-
- "sparkfun_qwiic_micro_with_flash"
372-
- "sparkfun_redboard_turbo"
373-
- "sparkfun_samd21_dev"
374-
- "sparkfun_samd21_mini"
375-
- "sparkfun_samd51_micromod"
376-
- "sparkfun_samd51_thing_plus"
377-
- "sparkfun_stm32f405_micromod"
378-
- "sparkfun_thing_plus_rp2040"
379-
- "spresense"
380-
- "stackrduino_m0_pro"
381-
- "stm32f411ce_blackpill"
382-
- "stm32f411ce_blackpill_with_flash"
383-
- "stm32f411ve_discovery"
384-
- "stm32f412zg_discovery"
385-
- "stm32f4_discovery"
386-
- "stm32f746g_discovery"
387-
- "stringcar_m0_express"
388-
- "teensy40"
389-
- "teensy41"
390-
- "teknikio_bluebird"
391-
- "thunderpack_v11"
392-
- "thunderpack_v12"
393-
- "tinkeringtech_scoutmakes_azul"
394-
- "trellis_m4_express"
395-
- "trinket_m0"
396-
- "trinket_m0_haxpress"
397-
- "uartlogger2"
398-
- "uchip"
399-
- "ugame10"
400-
- "warmbit_bluepixel"
401-
- "winterbloom_big_honking_button"
402-
- "winterbloom_sol"
403-
- "xinabox_cc03"
404-
- "xinabox_cs11"
230+
board: ${{ fromJSON(needs.test.outputs.arm-boards) }}
405231

406232
steps:
407233
- name: Set up Python 3.8
@@ -451,8 +277,7 @@ jobs:
451277
strategy:
452278
fail-fast: false
453279
matrix:
454-
board:
455-
- "fomu"
280+
board: ${{ fromJSON(needs.test.outputs.riscv-boards) }}
456281

457282
steps:
458283
- name: Set up Python 3.8
@@ -501,41 +326,7 @@ jobs:
501326
strategy:
502327
fail-fast: false
503328
matrix:
504-
board:
505-
- "adafruit_feather_esp32s2_nopsram"
506-
- "adafruit_feather_esp32s2_tftback_nopsram"
507-
- "adafruit_funhouse"
508-
- "adafruit_magtag_2.9_grayscale"
509-
- "adafruit_metro_esp32s2"
510-
- "ai_thinker_esp_12k_nodemcu"
511-
- "artisense_rd00"
512-
- "atmegazero_esp32s2"
513-
- "crumpspace_crumps2"
514-
- "electroniccats_bastwifi"
515-
- "espressif_hmi_devkit_1"
516-
- "espressif_kaluga_1"
517-
- "espressif_kaluga_1.3"
518-
- "espressif_saola_1_wroom"
519-
- "espressif_saola_1_wrover"
520-
- "franzininho_wifi_wroom"
521-
- "franzininho_wifi_wrover"
522-
- "gravitech_cucumber_m"
523-
- "gravitech_cucumber_ms"
524-
- "gravitech_cucumber_r"
525-
- "gravitech_cucumber_rs"
526-
- "lilygo_ttgo_t8_s2_st7789"
527-
- "lolin_s2_mini"
528-
- "microdev_micro_s2"
529-
- "morpheans_morphesp-240"
530-
- "muselab_nanoesp32_s2_wroom"
531-
- "muselab_nanoesp32_s2_wrover"
532-
- "odt_pixelwing_esp32_s2"
533-
- "targett_module_clip_wroom"
534-
- "targett_module_clip_wrover"
535-
- "unexpectedmaker_feathers2"
536-
- "unexpectedmaker_feathers2_neo"
537-
- "unexpectedmaker_feathers2_prerelease"
538-
- "unexpectedmaker_tinys2"
329+
board: ${{ fromJSON(needs.test.outputs.xtensa-boards) }}
539330

540331
steps:
541332
- name: Set up Python 3.8

0 commit comments

Comments
 (0)