Nightly Platforms #80
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Daily safety-net sweep of every per-board build workflow. | |
| # See FastLED/fbuild#835. | |
| # | |
| # This file is AUTOGENERATED from ci/board_families.json. | |
| # Edit the SOT and re-run `uv run python ci/render_workflows.py`. | |
| # The CI drift gate (.github/workflows/ci-workflow-drift.yml) enforces this. | |
| name: Nightly Platforms | |
| on: | |
| schedule: | |
| # 11:00 UTC = 03:00 PST (winter) / 04:00 PDT (summer). GitHub cron | |
| # has no timezone, so one of the two has to drift; 3am standard | |
| # time is the one asked for (FastLED/fbuild#1396). See also #835. | |
| - cron: '0 11 * * *' | |
| workflow_dispatch: | |
| inputs: | |
| force: | |
| description: 'Run all platform builds even without recent commits' | |
| type: boolean | |
| default: false | |
| jobs: | |
| guard: | |
| name: Guard (skip on quiet days) | |
| runs-on: ubuntu-latest | |
| outputs: | |
| should_run: ${{ steps.check.outputs.should_run }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - id: check | |
| env: | |
| FORCE: ${{ inputs.force }} | |
| run: | | |
| if [ "$FORCE" = "true" ]; then | |
| echo "force=true -- running nightly sweep regardless of commit activity" | |
| echo "should_run=true" >> "$GITHUB_OUTPUT" | |
| exit 0 | |
| fi | |
| # Scheduled runs check out the default branch's HEAD; on | |
| # workflow_dispatch from a feature branch this checks that | |
| # branch instead, which is the right behavior for manual runs. | |
| if [ -z "$(git log --since='24 hours ago' --oneline HEAD)" ]; then | |
| echo "No commits in the last 24h -- skipping nightly platform sweep" | |
| echo "should_run=false" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "Recent commits found -- running full nightly sweep" | |
| echo "should_run=true" >> "$GITHUB_OUTPUT" | |
| fi | |
| build: | |
| name: ${{ matrix.workflow_name }} | |
| needs: guard | |
| if: needs.guard.outputs.should_run == 'true' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - workflow_name: "Ambiq Apollo3 Red" | |
| test_dir: "tests/platform/apollo3_red" | |
| env_name: "apollo3_red" | |
| firmware_ext: "bin" | |
| - workflow_name: "Apollo3 Thing Explorable" | |
| test_dir: "tests/platform/apollo3_thing_explorable" | |
| env_name: "apollo3_thing_explorable" | |
| firmware_ext: "bin" | |
| - workflow_name: "ATmega8" | |
| test_dir: "tests/platform/atmega8" | |
| env_name: "atmega8" | |
| firmware_ext: "hex" | |
| - workflow_name: "ATmega8A" | |
| test_dir: "tests/platform/atmega8a" | |
| env_name: "atmega8a" | |
| firmware_ext: "hex" | |
| - workflow_name: "ATtiny1604" | |
| test_dir: "tests/platform/attiny1604" | |
| env_name: "attiny1604" | |
| firmware_ext: "hex" | |
| - workflow_name: "ATtiny1616" | |
| test_dir: "tests/platform/attiny1616" | |
| env_name: "attiny1616" | |
| firmware_ext: "hex" | |
| - workflow_name: "ATtiny4313" | |
| test_dir: "tests/platform/attiny4313" | |
| env_name: "attiny4313" | |
| firmware_ext: "hex" | |
| - workflow_name: "ATtiny85" | |
| test_dir: "tests/platform/attiny85" | |
| env_name: "attiny85" | |
| firmware_ext: "hex" | |
| - workflow_name: "ATtiny88" | |
| test_dir: "tests/platform/attiny88" | |
| env_name: "attiny88" | |
| firmware_ext: "hex" | |
| - workflow_name: "STM32 BlackPill F411CE" | |
| test_dir: "tests/platform/blackpill_f411ce" | |
| env_name: "blackpill" | |
| firmware_ext: "hex" | |
| - workflow_name: "STM32 BluePill F103C8" | |
| test_dir: "tests/platform/bluepill_f103c8" | |
| env_name: "bluepill" | |
| firmware_ext: "hex" | |
| - workflow_name: "CH32L103" | |
| test_dir: "tests/platform/ch32l103" | |
| env_name: "ch32l103" | |
| firmware_ext: "bin" | |
| - workflow_name: "CH32V003" | |
| test_dir: "tests/platform/ch32v003" | |
| env_name: "ch32v003" | |
| firmware_ext: "bin" | |
| - workflow_name: "CH32V006" | |
| test_dir: "tests/platform/ch32v006" | |
| env_name: "ch32v006" | |
| firmware_ext: "bin" | |
| - workflow_name: "CH32V103" | |
| test_dir: "tests/platform/ch32v103" | |
| env_name: "ch32v103" | |
| firmware_ext: "bin" | |
| - workflow_name: "CH32V203" | |
| test_dir: "tests/platform/ch32v203" | |
| env_name: "ch32v203" | |
| firmware_ext: "bin" | |
| - workflow_name: "CH32V208" | |
| test_dir: "tests/platform/ch32v208" | |
| env_name: "ch32v208" | |
| firmware_ext: "bin" | |
| - workflow_name: "CH32V303" | |
| test_dir: "tests/platform/ch32v303" | |
| env_name: "ch32v303" | |
| firmware_ext: "bin" | |
| - workflow_name: "CH32V307" | |
| test_dir: "tests/platform/ch32v307" | |
| env_name: "ch32v307" | |
| firmware_ext: "bin" | |
| - workflow_name: "CH32X035" | |
| test_dir: "tests/platform/ch32x035" | |
| env_name: "ch32x035" | |
| firmware_ext: "bin" | |
| - workflow_name: "Teknic ClearCore (SAME53)" | |
| test_dir: "tests/platform/clearcore" | |
| env_name: "clearcore" | |
| firmware_ext: "bin" | |
| - workflow_name: "Arduino Due" | |
| test_dir: "tests/platform/due" | |
| env_name: "due" | |
| firmware_ext: "bin" | |
| - workflow_name: "ESP32-C2" | |
| test_dir: "tests/platform/esp32c2" | |
| env_name: "esp32c2" | |
| firmware_ext: "bin" | |
| - workflow_name: "ESP32-C3" | |
| test_dir: "tests/platform/esp32c3" | |
| env_name: "esp32c3" | |
| firmware_ext: "bin" | |
| - workflow_name: "ESP32-C5" | |
| test_dir: "tests/platform/esp32c5" | |
| env_name: "esp32c5" | |
| firmware_ext: "bin" | |
| - workflow_name: "ESP32-C6" | |
| test_dir: "tests/platform/esp32c6" | |
| env_name: "esp32c6" | |
| firmware_ext: "bin" | |
| - workflow_name: "ESP32 Dev" | |
| test_dir: "tests/platform/esp32dev" | |
| env_name: "esp32dev" | |
| firmware_ext: "bin" | |
| - workflow_name: "ESP32-H2" | |
| test_dir: "tests/platform/esp32h2" | |
| env_name: "esp32h2" | |
| firmware_ext: "bin" | |
| - workflow_name: "ESP32-P4" | |
| test_dir: "tests/platform/esp32p4" | |
| env_name: "esp32p4" | |
| firmware_ext: "bin" | |
| - workflow_name: "ESP32-S2" | |
| test_dir: "tests/platform/esp32s2" | |
| env_name: "esp32s2" | |
| firmware_ext: "bin" | |
| - workflow_name: "ESP32-S3" | |
| test_dir: "tests/platform/esp32s3" | |
| env_name: "esp32s3" | |
| firmware_ext: "bin" | |
| - workflow_name: "ESP8266" | |
| test_dir: "tests/platform/esp8266" | |
| env_name: "esp8266" | |
| firmware_ext: "bin" | |
| - workflow_name: "Arduino GIGA R1 M7" | |
| test_dir: "tests/platform/giga_r1_m7" | |
| env_name: "giga_r1" | |
| firmware_ext: "bin" | |
| - workflow_name: "Arduino Leonardo" | |
| test_dir: "tests/platform/leonardo" | |
| env_name: "leonardo" | |
| firmware_ext: "hex" | |
| - workflow_name: "NXP LPCXpresso804" | |
| test_dir: "tests/platform/lpc804" | |
| env_name: "lpc804" | |
| firmware_ext: "bin" | |
| - workflow_name: "NXP LPC845" | |
| test_dir: "tests/platform/lpc845" | |
| env_name: "lpc845" | |
| firmware_ext: "bin" | |
| - workflow_name: "NXP LPC845-BRK" | |
| test_dir: "tests/platform/lpc845brk" | |
| env_name: "lpc845brk" | |
| firmware_ext: "bin" | |
| - workflow_name: "NXP LPCXpresso804" | |
| test_dir: "tests/platform/lpcxpresso804" | |
| env_name: "lpcxpresso804" | |
| firmware_ext: "bin" | |
| - workflow_name: "NXP LPCXpresso845-MAX" | |
| test_dir: "tests/platform/lpcxpresso845max" | |
| env_name: "lpcxpresso845max" | |
| firmware_ext: "bin" | |
| - workflow_name: "Adafruit Matrix Portal M4" | |
| test_dir: "tests/platform/matrix_portal_m4" | |
| env_name: "matrix_portal_m4" | |
| firmware_ext: "bin" | |
| - workflow_name: "Silicon Labs MGM240" | |
| test_dir: "tests/platform/mgm240" | |
| env_name: "mgm240" | |
| firmware_ext: "bin" | |
| - workflow_name: "Arduino Nano Every" | |
| test_dir: "tests/platform/nano_every" | |
| env_name: "nano_every" | |
| firmware_ext: "hex" | |
| - workflow_name: "Arduino Nano Every" | |
| test_dir: "tests/platform/nano_every" | |
| env_name: "nano_every" | |
| firmware_ext: "hex" | |
| - workflow_name: "Nice!Nano nRF52840" | |
| test_dir: "tests/platform/nice_nano_nrf52840" | |
| env_name: "nice_nano_nrf52840" | |
| firmware_ext: "hex" | |
| - workflow_name: "Adafruit Feather nRF52840 Sense" | |
| test_dir: "tests/platform/adafruit_feather_nrf52840_sense" | |
| env_name: "nrf52840_sense" | |
| firmware_ext: "hex" | |
| - workflow_name: "Nordic nRF52840-DK" | |
| test_dir: "tests/platform/nrf52840_dk" | |
| env_name: "nrf52840_dk" | |
| firmware_ext: "hex" | |
| - workflow_name: "nrfmicro nRF52840" | |
| test_dir: "tests/platform/nrfmicro_nrf52840" | |
| env_name: "nrfmicro_nrf52840" | |
| firmware_ext: "hex" | |
| - workflow_name: "ST Nucleo F429ZI" | |
| test_dir: "tests/platform/nucleo_f429zi" | |
| env_name: "nucleo_f429zi" | |
| firmware_ext: "hex" | |
| - workflow_name: "ST Nucleo F439ZI" | |
| test_dir: "tests/platform/nucleo_f439zi" | |
| env_name: "nucleo_f439zi" | |
| firmware_ext: "hex" | |
| - workflow_name: "ST Nucleo F429ZI" | |
| test_dir: "tests/platform/nucleo_f429zi" | |
| env_name: "nucleo_f429zi" | |
| firmware_ext: "hex" | |
| - workflow_name: "ST Nucleo F439ZI" | |
| test_dir: "tests/platform/nucleo_f439zi" | |
| env_name: "nucleo_f439zi" | |
| firmware_ext: "hex" | |
| - workflow_name: "Adafruit QT Py M0" | |
| test_dir: "tests/platform/qtpy_m0" | |
| env_name: "qtpy_m0" | |
| firmware_ext: "bin" | |
| - workflow_name: "RP2040" | |
| test_dir: "tests/platform/rp2040" | |
| env_name: "rp2040" | |
| firmware_ext: "bin" | |
| - workflow_name: "RP2350" | |
| test_dir: "tests/platform/rp2350" | |
| env_name: "rp2350" | |
| firmware_ext: "bin" | |
| - workflow_name: "Raspberry Pi Pico" | |
| test_dir: "tests/platform/rpipico" | |
| env_name: "rpipico" | |
| firmware_ext: "bin" | |
| - workflow_name: "Raspberry Pi Pico 2" | |
| test_dir: "tests/platform/rpipico2" | |
| env_name: "rpipico2" | |
| firmware_ext: "bin" | |
| - workflow_name: "Atmel SAM3X8E (Due)" | |
| test_dir: "tests/platform/sam3x8e_due" | |
| env_name: "sam3x8e_due" | |
| firmware_ext: "bin" | |
| - workflow_name: "Atmel SAMD21" | |
| test_dir: "tests/platform/samd21" | |
| env_name: "samd21" | |
| firmware_ext: "bin" | |
| - workflow_name: "Arduino Zero (SAMD21)" | |
| test_dir: "tests/platform/samd21_zero" | |
| env_name: "samd21_zero" | |
| firmware_ext: "bin" | |
| - workflow_name: "Atmel SAMD51J" | |
| test_dir: "tests/platform/samd51j" | |
| env_name: "samd51j" | |
| firmware_ext: "bin" | |
| - workflow_name: "Atmel SAMD51P" | |
| test_dir: "tests/platform/samd51p" | |
| env_name: "samd51p" | |
| firmware_ext: "bin" | |
| - workflow_name: "STM32F103C8" | |
| test_dir: "tests/platform/stm32f103c8" | |
| env_name: "stm32f103c8" | |
| firmware_ext: "hex" | |
| - workflow_name: "STM32F103CB" | |
| test_dir: "tests/platform/stm32f103cb" | |
| env_name: "stm32f103cb" | |
| firmware_ext: "hex" | |
| - workflow_name: "STM32F103TB" | |
| test_dir: "tests/platform/stm32f103tb" | |
| env_name: "stm32f103tb" | |
| firmware_ext: "hex" | |
| - workflow_name: "STM32F411CE" | |
| test_dir: "tests/platform/stm32f411ce" | |
| env_name: "stm32f411ce" | |
| firmware_ext: "hex" | |
| - workflow_name: "STM32H747XI" | |
| test_dir: "tests/platform/stm32h747xi" | |
| env_name: "stm32h747xi" | |
| firmware_ext: "bin" | |
| - workflow_name: "SuperMini nRF52840" | |
| test_dir: "tests/platform/supermini_nrf52840" | |
| env_name: "supermini_nrf52840" | |
| firmware_ext: "hex" | |
| - workflow_name: "Teensy 3.0" | |
| test_dir: "tests/platform/teensy30" | |
| env_name: "teensy30" | |
| firmware_ext: "hex" | |
| - workflow_name: "Teensy 3.1" | |
| test_dir: "tests/platform/teensy31" | |
| env_name: "teensy31" | |
| firmware_ext: "hex" | |
| - workflow_name: "Teensy 3.2" | |
| test_dir: "tests/platform/teensy32" | |
| env_name: "teensy32" | |
| firmware_ext: "hex" | |
| - workflow_name: "Teensy 3.5" | |
| test_dir: "tests/platform/teensy35" | |
| env_name: "teensy35" | |
| firmware_ext: "hex" | |
| - workflow_name: "Teensy 3.6" | |
| test_dir: "tests/platform/teensy36" | |
| env_name: "teensy36" | |
| firmware_ext: "hex" | |
| - workflow_name: "Teensy 4.0" | |
| test_dir: "tests/platform/teensy40" | |
| env_name: "teensy40" | |
| firmware_ext: "hex" | |
| - workflow_name: "Teensy 4.1" | |
| test_dir: "tests/platform/teensy41" | |
| env_name: "teensy41" | |
| firmware_ext: "hex" | |
| - workflow_name: "Teensy LC" | |
| test_dir: "tests/platform/teensylc" | |
| env_name: "teensylc" | |
| firmware_ext: "hex" | |
| - workflow_name: "SparkFun Thing Plus Matter" | |
| test_dir: "tests/platform/sparkfun_thingplusmatter" | |
| env_name: "thingplusmatter" | |
| firmware_ext: "bin" | |
| - workflow_name: "HY TinySTM103TB" | |
| test_dir: "tests/platform/hy_tinystm103tb" | |
| env_name: "tinystm" | |
| firmware_ext: "hex" | |
| - workflow_name: "Arduino Uno R4 WiFi" | |
| test_dir: "tests/platform/uno_r4_wifi" | |
| env_name: "uno_r4_wifi" | |
| firmware_ext: "bin" | |
| - workflow_name: "Arduino Uno" | |
| test_dir: "tests/platform/uno" | |
| env_name: "uno" | |
| firmware_ext: "hex" | |
| - workflow_name: "Arduino Uno R4 WiFi" | |
| test_dir: "tests/platform/uno_r4_wifi" | |
| env_name: "uno_r4_wifi" | |
| firmware_ext: "bin" | |
| uses: ./.github/workflows/template_build.yml | |
| with: | |
| workflow-name: ${{ matrix.workflow_name }} | |
| test-dir: ${{ matrix.test_dir }} | |
| env-name: ${{ matrix.env_name }} | |
| firmware-ext: ${{ matrix.firmware_ext }} |