Skip to content

Commit

Permalink
Don't upload multiple times to same artifact in sketch compilation wo…
Browse files Browse the repository at this point in the history
…rkflow

The "Compile Examples" GitHub Actions workflow is configured to compile the example sketches for each of the supported
boards. This is done by using a job matrix in the GitHub Actions workflow to generate a parallel job for each board.

A GitHub Actions workflow artifact is used to transfer the sketches report files generated by the
"arduino/compile-sketches" action between this workflow's job and the "Report Size Deltas" workflow that uses the
"arduino/report-size-deltas" action to publish the data. The "actions/upload-artifact" action is used to upload the
sketches report files to the workflow artifact.

Previously, the sketches reports from all the boards were uploaded to a single artifact. However, support for uploading
multiple times to a single artifact was dropped in version 4.0.0 of the "actions/upload-artifact" action. So it is now
necessary for each of the jobs to use a separate artifact. The "arduino/report-size-deltas" action is configured to
recognize these multiple artifacts by a regular expression that matches against a standardized prefix on the artifact
names.
  • Loading branch information
per1234 committed Oct 18, 2024
1 parent 106b2c6 commit 8e9f848
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 3 deletions.
40 changes: 39 additions & 1 deletion .github/workflows/compile-platform-examples.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,117 +35,155 @@ jobs:
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

Expand Down Expand Up @@ -206,4 +244,4 @@ jobs:
with:
if-no-files-found: error
path: ${{ env.SKETCHES_REPORTS_PATH }}
name: ${{ env.SKETCHES_REPORTS_PATH }}
name: sketches-report-${{ matrix.board.artifact-name-suffix }}
4 changes: 2 additions & 2 deletions .github/workflows/report-size-deltas.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,5 @@ jobs:
- name: Comment size deltas reports to PRs
uses: arduino/report-size-deltas@v1
with:
# The name of the workflow artifact created by the sketch compilation workflow
sketches-reports-source: sketches-reports
# Regex matching the names of the workflow artifacts created by the "Compile Examples" workflow
sketches-reports-source: ^sketches-report-.+

0 comments on commit 8e9f848

Please sign in to comment.