From 8e9f84815111753b7206c9d1bfd2ffd94c1560dd Mon Sep 17 00:00:00 2001 From: per1234 Date: Fri, 18 Oct 2024 06:47:25 -0700 Subject: [PATCH] Don't upload multiple times to same artifact in sketch compilation workflow 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. --- .../workflows/compile-platform-examples.yml | 40 ++++++++++++++++++- .github/workflows/report-size-deltas.yml | 4 +- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/.github/workflows/compile-platform-examples.yml b/.github/workflows/compile-platform-examples.yml index 93e40a506..58cfd3409 100644 --- a/.github/workflows/compile-platform-examples.yml +++ b/.github/workflows/compile-platform-examples.yml @@ -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 @@ -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 }} diff --git a/.github/workflows/report-size-deltas.yml b/.github/workflows/report-size-deltas.yml index 652be5d9d..39e2a0ad2 100644 --- a/.github/workflows/report-size-deltas.yml +++ b/.github/workflows/report-size-deltas.yml @@ -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-.+