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 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: | # 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@v2 with: if-no-files-found: error path: ${{ env.SKETCHES_REPORTS_PATH }} name: ${{ env.SKETCHES_REPORTS_PATH }}