Skip to content

Don't upload multiple times to same artifact in sketch compilation wo… #172

Don't upload multiple times to same artifact in sketch compilation wo…

Don't upload multiple times to same artifact in sketch compilation wo… #172

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
env:
SKETCHES_REPORTS_PATH: sketches-reports
strategy:
fail-fast: false
matrix:
board:
- fqbn: arduino:avr:yun
artifact-name-suffix: arduino-avr-yun
serial: true
softwareserial: true
- fqbn: arduino:avr:uno
artifact-name-suffix: arduino-avr-uno
serial: true
softwareserial: true
- fqbn: arduino:avr:diecimila:cpu=atmega328
artifact-name-suffix: arduino-avr-diecimila-cpu-atmega328
serial: true
softwareserial: true
- fqbn: arduino:avr:diecimila:cpu=atmega168
artifact-name-suffix: arduino-avr-diecimila-cpu-atmega168
serial: true
softwareserial: true
- fqbn: arduino:avr:nano:cpu=atmega328
artifact-name-suffix: arduino-avr-nano-cpu-atmega328
serial: true
softwareserial: true
- fqbn: arduino:avr:nano:cpu=atmega328old
artifact-name-suffix: arduino-avr-nano-cpu-atmega328old
serial: true
softwareserial: true
- fqbn: arduino:avr:nano:cpu=atmega168
artifact-name-suffix: arduino-avr-nano-cpu-atmega168
serial: true
softwareserial: true
- fqbn: arduino:avr:mega:cpu=atmega2560
artifact-name-suffix: arduino-avr-mega-cpu-atmega2560
serial: true
softwareserial: true
- fqbn: arduino:avr:mega:cpu=atmega1280
artifact-name-suffix: arduino-avr-mega-cpu-atmega1280
serial: true
softwareserial: true
- fqbn: arduino:avr:megaADK
artifact-name-suffix: arduino-avr-megaADK
serial: true
softwareserial: true
- fqbn: arduino:avr:leonardo
artifact-name-suffix: arduino-avr-leonardo
serial: true
softwareserial: true
- fqbn: arduino:avr:leonardoeth
artifact-name-suffix: arduino-avr-leonardoeth
serial: true
softwareserial: true
- fqbn: arduino:avr:micro
artifact-name-suffix: arduino-avr-micro
serial: true
softwareserial: true
- fqbn: arduino:avr:esplora
artifact-name-suffix: arduino-avr-esplora
serial: true
softwareserial: true
- fqbn: arduino:avr:mini:cpu=atmega328
artifact-name-suffix: arduino-avr-mini-cpu-atmega328
serial: true
softwareserial: true
- fqbn: arduino:avr:mini:cpu=atmega168
artifact-name-suffix: arduino-avr-mini-cpu-atmega168
serial: true
softwareserial: true
- fqbn: arduino:avr:ethernet
artifact-name-suffix: arduino-avr-ethernet
serial: true
softwareserial: true
- fqbn: arduino:avr:fio
artifact-name-suffix: arduino-avr-fio
serial: true
softwareserial: true
- fqbn: arduino:avr:bt:cpu=atmega328
artifact-name-suffix: arduino-avr-bt-cpu-atmega328
serial: true
softwareserial: true
- fqbn: arduino:avr:bt:cpu=atmega168
artifact-name-suffix: arduino-avr-bt-cpu-atmega168
serial: true
softwareserial: true
- fqbn: arduino:avr:LilyPadUSB
artifact-name-suffix: arduino-avr-LilyPadUSB
serial: true
softwareserial: true
- fqbn: arduino:avr:lilypad:cpu=atmega328
artifact-name-suffix: arduino-avr-lilypad-cpu-atmega328
serial: true
softwareserial: true
- fqbn: arduino:avr:lilypad:cpu=atmega168
artifact-name-suffix: arduino-avr-lilypad-cpu-atmega168
serial: true
softwareserial: true
- fqbn: arduino:avr:pro:cpu=16MHzatmega328
artifact-name-suffix: arduino-avr-pro-cpu-16MHzatmega328
serial: true
softwareserial: true
- fqbn: arduino:avr:pro:cpu=8MHzatmega328
artifact-name-suffix: arduino-avr-pro-cpu-8MHzatmega328
serial: true
softwareserial: true
- fqbn: arduino:avr:pro:cpu=16MHzatmega168
artifact-name-suffix: arduino-avr-pro-cpu-16MHzatmega168
serial: true
softwareserial: true
- fqbn: arduino:avr:pro:cpu=8MHzatmega168
artifact-name-suffix: arduino-avr-pro-cpu-8MHzatmega168
serial: true
softwareserial: true
- fqbn: arduino:avr:atmegang:cpu=atmega168
artifact-name-suffix: arduino-avr-atmegang-cpu-atmega168
serial: true
softwareserial: true
- fqbn: arduino:avr:atmegang:cpu=atmega8
artifact-name-suffix: arduino-avr-atmegang-cpu-atmega8
serial: true
softwareserial: false
- fqbn: arduino:avr:robotControl
artifact-name-suffix: arduino-avr-robotControl
serial: true
softwareserial: false
- fqbn: arduino:avr:robotMotor
artifact-name-suffix: arduino-avr-robotMotor
serial: true
softwareserial: false
- fqbn: arduino:avr:gemma
artifact-name-suffix: arduino-avr-gemma
serial: false
softwareserial: false
- fqbn: arduino:avr:circuitplay32u4cat
artifact-name-suffix: arduino-avr-circuitplay32u4cat
serial: true
softwareserial: true
- fqbn: arduino:avr:yunmini
artifact-name-suffix: arduino-avr-yunmini
serial: true
softwareserial: true
- fqbn: arduino:avr:chiwawa
artifact-name-suffix: arduino-avr-chiwawa
serial: true
softwareserial: true
- fqbn: arduino:avr:one
artifact-name-suffix: arduino-avr-one
serial: true
softwareserial: true
- fqbn: arduino:avr:unowifi
artifact-name-suffix: arduino-avr-unowifi
serial: true
softwareserial: true
- fqbn: arduino:avr:unomini
artifact-name-suffix: arduino-avr-unomini
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@v4
- 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: |
# 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 }}
enable-deltas-report: true
sketches-report-path: ${{ env.SKETCHES_REPORTS_PATH }}
- name: Save sketches report as workflow artifact
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
path: ${{ env.SKETCHES_REPORTS_PATH }}
name: sketches-report-${{ matrix.board.artifact-name-suffix }}