From 05b7d7a9e9e89599f9b4c4762d55a7f5f4161ed4 Mon Sep 17 00:00:00 2001 From: per1234 Date: Wed, 26 May 2021 04:38:16 -0700 Subject: Add "smoke test" examples compilation CI workflow On every push or pull request that affects platform source code or bundled libraries, compile example sketches of all bundled libraries for the platform's boards. --- .github/workflows/compile-platform-examples.yml | 195 ++++++++++++++++++++++++ README.md | 1 + 2 files changed, 196 insertions(+) create mode 100644 .github/workflows/compile-platform-examples.yml diff --git a/.github/workflows/compile-platform-examples.yml b/.github/workflows/compile-platform-examples.yml new file mode 100644 index 0000000..3701bd0 --- /dev/null +++ b/.github/workflows/compile-platform-examples.yml @@ -0,0 +1,195 @@ +name: Compile Examples + +# See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows +on: + push: + paths: + - ".github/workflows/compile-platform-examples.ya?ml" + - "cores/**" + - "libraries/**" + - "variants/**" + - "boards.txt" + - "platform.txt" + pull_request: + paths: + - ".github/workflows/compile-platform-examples.ya?ml" + - "cores/**" + - "libraries/**" + - "variants/**" + - "boards.txt" + - "platform.txt" + workflow_dispatch: + repository_dispatch: + +jobs: + build: + name: ${{ matrix.board.fqbn }} + runs-on: ubuntu-latest + + strategy: + fail-fast: false + + matrix: + board: + - fqbn: arduino:avr:yun + serial: true + softwareserial: true + - fqbn: arduino:avr:uno + serial: true + softwareserial: true + - fqbn: arduino:avr:diecimila:cpu=atmega328 + serial: true + softwareserial: true + - fqbn: arduino:avr:diecimila:cpu=atmega168 + serial: true + softwareserial: true + - fqbn: arduino:avr:nano:cpu=atmega328 + serial: true + softwareserial: true + - fqbn: arduino:avr:nano:cpu=atmega328old + serial: true + softwareserial: true + - fqbn: arduino:avr:nano:cpu=atmega168 + serial: true + softwareserial: true + - fqbn: arduino:avr:mega:cpu=atmega2560 + serial: true + softwareserial: true + - fqbn: arduino:avr:mega:cpu=atmega1280 + serial: true + softwareserial: true + - fqbn: arduino:avr:megaADK + serial: true + softwareserial: true + - fqbn: arduino:avr:leonardo + serial: true + softwareserial: true + - fqbn: arduino:avr:leonardoeth + serial: true + softwareserial: true + - fqbn: arduino:avr:micro + serial: true + softwareserial: true + - fqbn: arduino:avr:esplora + serial: true + softwareserial: true + - fqbn: arduino:avr:mini:cpu=atmega328 + serial: true + softwareserial: true + - fqbn: arduino:avr:mini:cpu=atmega168 + serial: true + softwareserial: true + - fqbn: arduino:avr:ethernet + serial: true + softwareserial: true + - fqbn: arduino:avr:fio + serial: true + softwareserial: true + - fqbn: arduino:avr:bt:cpu=atmega328 + serial: true + softwareserial: true + - fqbn: arduino:avr:bt:cpu=atmega168 + serial: true + softwareserial: true + - fqbn: arduino:avr:LilyPadUSB + serial: true + softwareserial: true + - fqbn: arduino:avr:lilypad:cpu=atmega328 + serial: true + softwareserial: true + - fqbn: arduino:avr:lilypad:cpu=atmega168 + serial: true + softwareserial: true + - fqbn: arduino:avr:pro:cpu=16MHzatmega328 + serial: true + softwareserial: true + - fqbn: arduino:avr:pro:cpu=8MHzatmega328 + serial: true + softwareserial: true + - fqbn: arduino:avr:pro:cpu=16MHzatmega168 + serial: true + softwareserial: true + - fqbn: arduino:avr:pro:cpu=8MHzatmega168 + serial: true + softwareserial: true + - fqbn: arduino:avr:atmegang:cpu=atmega168 + serial: true + softwareserial: true + - fqbn: arduino:avr:atmegang:cpu=atmega8 + serial: true + softwareserial: false + - fqbn: arduino:avr:robotControl + serial: true + softwareserial: false + - fqbn: arduino:avr:robotMotor + serial: true + softwareserial: false + - fqbn: arduino:avr:gemma + serial: false + softwareserial: false + - fqbn: arduino:avr:circuitplay32u4cat + serial: true + softwareserial: true + - fqbn: arduino:avr:yunmini + serial: true + softwareserial: true + - fqbn: arduino:avr:chiwawa + serial: true + softwareserial: true + - fqbn: arduino:avr:one + serial: true + softwareserial: true + - fqbn: arduino:avr:unowifi + serial: true + softwareserial: true + + # Make board type-specific customizations to the matrix jobs + include: + - board: + # Boards with Serial interface + serial: true + # Compile these sketches in addition to the ones compiled for all boards + serial-sketch-paths: | + - libraries/EEPROM/examples/eeprom_crc + - libraries/EEPROM/examples/eeprom_get + - libraries/EEPROM/examples/eeprom_put + - libraries/EEPROM/examples/eeprom_read + - libraries/SPI + - libraries/Wire + - board: + serial: false + serial-sketch-paths: "" + - board: + # Boards compatible with the SoftwareSerial library + softwareserial: true + softwareserial-sketch-paths: | + - libraries/SoftwareSerial + - board: + softwareserial: false + softwareserial-sketch-paths: "" + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Compile examples + uses: arduino/compile-sketches@v1 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + fqbn: ${{ matrix.board.fqbn }} + platforms: | + # Use Boards Manager to install the latest release of the platform to get the toolchain. + - name: arduino:avr + # Overwrite the Boards Manager installation with the platform from the repository. + - source-path: ./ + name: arduino:avr + sketch-paths: | + - libraries + # Compile these sketches for all boards + - libraries/EEPROM/examples/eeprom_clear + - libraries/EEPROM/examples/eeprom_iteration + - libraries/EEPROM/examples/eeprom_update + - libraries/EEPROM/examples/eeprom_write + # Board-specific sketches + ${{ matrix.serial-sketch-paths }} + ${{ matrix.softwareserial-sketch-paths }} diff --git a/README.md b/README.md index f072176..42a1f04 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Arduino AVR Boards [![Check Arduino status](https://github.com/arduino/ArduinoCore-avr/actions/workflows/check-arduino.yml/badge.svg)](https://github.com/arduino/ArduinoCore-avr/actions/workflows/check-arduino.yml) +[![Compile Examples status](https://github.com/arduino/ArduinoCore-avr/actions/workflows/compile-platform-examples.yml/badge.svg)](https://github.com/arduino/ArduinoCore-avr/actions/workflows/compile-platform-examples.yml) [![Spell Check status](https://github.com/arduino/ArduinoCore-avr/actions/workflows/spell-check.yml/badge.svg)](https://github.com/arduino/ArduinoCore-avr/actions/workflows/spell-check.yml) This repository contains the source code and configuration files of the Arduino AVR Boards -- cgit v1.2.3-18-g5258