Skip to content

Nightly Platforms

Nightly Platforms #80

# 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 }}