From cc39369492de05d1f8f8fbd25d944cb391b627b8 Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 15 Apr 2025 10:52:36 +0200 Subject: [PATCH 1/7] Add dedicated workflow to compile provisioning binaries --- .github/workflows/compile-provisioning.yml | 205 +++++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100644 .github/workflows/compile-provisioning.yml diff --git a/.github/workflows/compile-provisioning.yml b/.github/workflows/compile-provisioning.yml new file mode 100644 index 000000000..4bf4362ab --- /dev/null +++ b/.github/workflows/compile-provisioning.yml @@ -0,0 +1,205 @@ +name: Compile Provisioning + +on: + pull_request: + paths: + - ".github/workflows/compile-provisioning.yml" + - "examples/**" + - "src/**" + push: + paths: + - ".github/workflows/compile-provisioning.yml" + - "examples/**" + - "src/**" + +jobs: + build: + runs-on: ubuntu-latest + + env: + # libraries to install for all boards + UNIVERSAL_LIBRARIES: | + # Install the ArduinoIoTCloud library from the repository + - source-path: ./ + - source-url: https://github.com/fabik111/Arduino_ConnectionHandler.git + version: 0314cf54593029aea05bb8c179e40a26128f7d67 + - name: ArduinoBLE + - name: ArduinoECCX08 + - name: ArduinoBearSSL + - name: ArduinoHttpClient + - name: Arduino_DebugUtils + - name: ArduinoMqttClient + - source-url: https://github.com/fabik111/Arduino_SecureElement.git + version: f5a23964a1c70048e48d5ed2d2657004446f0e3d + - source-url: https://github.com/fabik111/Arduino_CloudUtils.git + version: a8b52eaf500c63b2e8bd3e4b6f6c77b70fc3e65d + - source-url: https://github.com/arduino-libraries/Arduino_KVStore.git + - source-url: https://github.com/arduino-libraries/Arduino_UniqueHWId.git + - source-url: https://github.com/arduino-libraries/Arduino_NetworkConfigurator.git + # sketch paths to compile (recursive) for all boards + UNIVERSAL_SKETCH_PATHS: | + - examples/utility/Provisioning_2.0 + SKETCHES_REPORTS_PATH: sketches-reports + + strategy: + fail-fast: false + + matrix: + board: + - fqbn: arduino:samd:mkrwifi1010 + type: nina + artifact-name-suffix: arduino-samd-mkrwifi1010 + - fqbn: arduino:samd:nano_33_iot + type: nina + artifact-name-suffix: arduino-samd-nano_33_iot + - fqbn: arduino:mbed_portenta:envie_m7:split=100_0 + type: mbed_portenta + artifact-name-suffix: arduino-mbed_portenta-envie_m7 + - fqbn: arduino:mbed_nano:nanorp2040connect + type: nina + artifact-name-suffix: arduino-mbed_nano-nanorp2040connect + - fqbn: arduino:mbed_nicla:nicla_vision + type: mbed_nicla + artifact-name-suffix: arduino-mbed_nicla-nicla_vision + - fqbn: arduino:mbed_opta:opta + type: mbed_opta + artifact-name-suffix: arduino-mbed_opta-opta + - fqbn: arduino:mbed_giga:giga + type: mbed_giga + artifact-name-suffix: arduino-mbed_giga-giga + - fqbn: arduino:renesas_portenta:portenta_c33 + type: renesas_portenta + artifact-name-suffix: arduino-renesas_portenta-portenta_c33 + - fqbn: arduino:renesas_uno:unor4wifi + type: renesas_uno + artifact-name-suffix: arduino-renesas_uno-unor4wifi + + # make board type-specific customizations to the matrix jobs + include: + # MKR WiFi 1010, Nano 33 IoT, Nano RP2040 Connect + - board: + type: nina + platforms: | + # Install samd and mbed_nano platform via Boards Manager + - name: arduino:samd + - name: arduino:mbed_nano + libraries: | + - name: RTCZero + - source-url: https://github.com/andreagilardoni/WiFiNINA.git + version: 31616ac5a30f6281c68f982bc39800771b2fbaeb + - name: Arduino_JSON + - source-url: https://github.com/adafruit/Adafruit_SleepyDog.git + # Portenta + - board: + type: mbed_portenta + platforms: | + # Install mbed_portenta platform via Boards Manager + - name: arduino:mbed_portenta + libraries: | + - name: Arduino_Cellular + # Nicla Vision + - board: + type: mbed_nicla + platforms: | + # Install mbed_nicla platform via Boards Manager + - name: arduino:mbed_nicla + # Opta + - board: + type: mbed_opta + platforms: | + # Install mbed_opta platform via Boards Manager + - name: arduino:mbed_opta + # GIGA + - board: + type: mbed_giga + platforms: | + # Install mbed_giga platform via Boards Manager + - name: arduino:mbed_giga + # Portenta C33 + - board: + type: renesas_portenta + platforms: | + # Install renesas_portenta platform via Boards Manager + - name: arduino:renesas_portenta + libraries: | + - name: Arduino_Cellular + # UNO R4 WiFi + - board: + type: renesas_uno + platforms: | + # Install renesas_uno platform via Boards Manager + - name: arduino:renesas_uno + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Compile production provisioning sketch + uses: arduino/compile-sketches@v1 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + platforms: ${{ matrix.platforms }} + fqbn: ${{ matrix.board.fqbn }} + libraries: | + ${{ env.UNIVERSAL_LIBRARIES }} + ${{ matrix.libraries }} + sketch-paths: | + ${{ env.UNIVERSAL_SKETCH_PATHS }} + ${{ matrix.sketch-paths }} + enable-deltas-report: "true" + sketches-report-path: ${{ env.SKETCHES_REPORTS_PATH }} + cli-compile-flags: | + - --verbose + - --output-dir + - ${{ runner.temp }}/provisioning-prod + + - name: Compile staging provisioning sketch + uses: arduino/compile-sketches@v1 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + platforms: ${{ matrix.platforms }} + fqbn: ${{ matrix.board.fqbn }} + libraries: | + ${{ env.UNIVERSAL_LIBRARIES }} + ${{ matrix.libraries }} + sketch-paths: | + ${{ env.UNIVERSAL_SKETCH_PATHS }} + ${{ matrix.sketch-paths }} + enable-deltas-report: "true" + sketches-report-path: ${{ env.SKETCHES_REPORTS_PATH }} + cli-compile-flags: | + - --verbose + - --build-property + - "build.extra_flags=-DCOMPILE_TEST=1" + - --output-dir + - ${{ runner.temp }}/provisioning-staging + + - name: Write data to size trends report spreadsheet + # Update report on every push to the master branch + if: github.event_name == 'push' && github.ref == 'refs/heads/master' + uses: arduino/report-size-trends@main + with: + sketches-report-path: ${{ env.SKETCHES_REPORTS_PATH }} + google-key-file: ${{ secrets.GOOGLE_KEY_FILE }} + spreadsheet-id: 1I6NZkpZpf8KugBkE92adB1Z3_b7ZepOpCdYTOigJpN4 + + - name: Save memory usage change report as artifact + if: github.event_name == 'pull_request' + uses: actions/upload-artifact@v4 + with: + name: sketches-report-${{ matrix.board.artifact-name-suffix }} + path: ${{ env.SKETCHES_REPORTS_PATH }} + + - name: Save production artifact + if: github.event_name == 'pull_request' + uses: actions/upload-artifact@v4 + with: + name: provisioning-prod-${{ matrix.board.artifact-name-suffix }} + path: ${{ runner.temp }}/provisioning-prod/ + + - name: Save staging artifact + if: github.event_name == 'pull_request' + uses: actions/upload-artifact@v4 + with: + name: provisioning-staging-${{ matrix.board.artifact-name-suffix }} + path: ${{ runner.temp }}/provisioning-staging/ From 99f4f932592ae8dba2496801583fb340106a58c4 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 16 Apr 2025 14:43:10 +0200 Subject: [PATCH 2/7] update compile provisioning library refs --- .github/workflows/compile-provisioning.yml | 60 +++++++++++++++++----- 1 file changed, 47 insertions(+), 13 deletions(-) diff --git a/.github/workflows/compile-provisioning.yml b/.github/workflows/compile-provisioning.yml index 4bf4362ab..e4aa0d923 100644 --- a/.github/workflows/compile-provisioning.yml +++ b/.github/workflows/compile-provisioning.yml @@ -21,21 +21,26 @@ jobs: UNIVERSAL_LIBRARIES: | # Install the ArduinoIoTCloud library from the repository - source-path: ./ - - source-url: https://github.com/fabik111/Arduino_ConnectionHandler.git - version: 0314cf54593029aea05bb8c179e40a26128f7d67 - name: ArduinoBLE - - name: ArduinoECCX08 - - name: ArduinoBearSSL + version: 1.4.0 - name: ArduinoHttpClient + version: 0.6.1 - name: Arduino_DebugUtils + version: 1.4.0 - name: ArduinoMqttClient - - source-url: https://github.com/fabik111/Arduino_SecureElement.git - version: f5a23964a1c70048e48d5ed2d2657004446f0e3d - - source-url: https://github.com/fabik111/Arduino_CloudUtils.git - version: a8b52eaf500c63b2e8bd3e4b6f6c77b70fc3e65d - - source-url: https://github.com/arduino-libraries/Arduino_KVStore.git + version: 0.1.8 + - name: Arduino_KVStore + version: 1.0.0 + - source-url: https://github.com/arduino-libraries/Arduino_ConnectionHandler.git + version: 0314cf54593029aea05bb8c179e40a26128f7d67 + - source-url: https://github.com/arduino-libraries/Arduino_SecureElement.git + version: 4900febf84435c1a06bb13451bced3bac6f16e76 + - source-url: https://github.com/arduino-libraries/Arduino_CloudUtils.git + version: 2e2facc2209b66905c180ec0058ef8b083912278 - source-url: https://github.com/arduino-libraries/Arduino_UniqueHWId.git + version: 7e1bfeb586cac00f043c39997a1e9937ed8152b0 - source-url: https://github.com/arduino-libraries/Arduino_NetworkConfigurator.git + version: d887ec0fd15d3d6bd427fa3e2c4f95b582f964a0 # sketch paths to compile (recursive) for all boards UNIVERSAL_SKETCH_PATHS: | - examples/utility/Provisioning_2.0 @@ -82,53 +87,82 @@ jobs: platforms: | # Install samd and mbed_nano platform via Boards Manager - name: arduino:samd + version: 1.8.14 - name: arduino:mbed_nano + version: 4.2.4 libraries: | - name: RTCZero - - source-url: https://github.com/andreagilardoni/WiFiNINA.git - version: 31616ac5a30f6281c68f982bc39800771b2fbaeb - - name: Arduino_JSON - - source-url: https://github.com/adafruit/Adafruit_SleepyDog.git + version: 1.6.0 + - name: ArduinoECCX08 + version: 1.3.8 + - name: Adafruit SleepyDog Library + version: 1.6.5 + - source-url: https://github.com/arduino-libraries/ArduinoBearSSL.git + version: a891ad3cb15bca3d080adc8188a63277f92fa81c + - source-url: https://github.com/arduino-libraries/WiFiNINA.git + version: 69e786c5c73fe94b7f408853550f6f151cfc58b0 # Portenta - board: type: mbed_portenta platforms: | # Install mbed_portenta platform via Boards Manager - name: arduino:mbed_portenta + version: 4.2.4 libraries: | - name: Arduino_Cellular + version: 1.2.1 + - name: ArduinoECCX08 + version: 1.3.8 + - source-url: https://github.com/arduino-libraries/ArduinoBearSSL.git + version: a891ad3cb15bca3d080adc8188a63277f92fa81c # Nicla Vision - board: type: mbed_nicla platforms: | # Install mbed_nicla platform via Boards Manager - name: arduino:mbed_nicla + version: 4.2.4 # Opta - board: type: mbed_opta platforms: | # Install mbed_opta platform via Boards Manager - name: arduino:mbed_opta + version: 4.2.4 + libraries: | + - name: ArduinoECCX08 + version: 1.3.8 + - source-url: https://github.com/arduino-libraries/ArduinoBearSSL.git + version: a891ad3cb15bca3d080adc8188a63277f92fa81c # GIGA - board: type: mbed_giga platforms: | # Install mbed_giga platform via Boards Manager - name: arduino:mbed_giga + version: 4.2.4 + libraries: | + - name: ArduinoECCX08 + version: 1.3.8 + - source-url: https://github.com/arduino-libraries/ArduinoBearSSL.git + version: a891ad3cb15bca3d080adc8188a63277f92fa81c # Portenta C33 - board: type: renesas_portenta platforms: | # Install renesas_portenta platform via Boards Manager - name: arduino:renesas_portenta + version: 1.4.1 libraries: | - name: Arduino_Cellular + version: 1.2.1 # UNO R4 WiFi - board: type: renesas_uno platforms: | # Install renesas_uno platform via Boards Manager - name: arduino:renesas_uno + version: 1.4.1 steps: - name: Checkout From ebd72c11b7c50a3297e0005224c9d87e5805971b Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 16 Apr 2025 14:45:20 +0200 Subject: [PATCH 3/7] Provisioning v0.1.1 --- examples/utility/Provisioning_2.0/Provisioning_2.0.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/utility/Provisioning_2.0/Provisioning_2.0.ino b/examples/utility/Provisioning_2.0/Provisioning_2.0.ino index 3ab02a278..4f36df3c7 100644 --- a/examples/utility/Provisioning_2.0/Provisioning_2.0.ino +++ b/examples/utility/Provisioning_2.0/Provisioning_2.0.ino @@ -15,7 +15,7 @@ #include #include "utility/LEDFeedback.h" -const char *SKETCH_VERSION = "0.1.0"; +const char *SKETCH_VERSION = "0.1.1"; enum class DeviceState { HARDWARE_CHECK, From 0e97c624aca417315dfcf47a942ac83e8e7544f5 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 12 May 2025 10:12:35 +0200 Subject: [PATCH 4/7] Provisioning v0.1.2 NetworkConfigurator 0.1.1 with 1300ms full frame animation for UNO R4 --- .github/workflows/compile-provisioning.yml | 2 +- examples/utility/Provisioning_2.0/Provisioning_2.0.ino | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/compile-provisioning.yml b/.github/workflows/compile-provisioning.yml index e4aa0d923..0ccb1a6ff 100644 --- a/.github/workflows/compile-provisioning.yml +++ b/.github/workflows/compile-provisioning.yml @@ -40,7 +40,7 @@ jobs: - source-url: https://github.com/arduino-libraries/Arduino_UniqueHWId.git version: 7e1bfeb586cac00f043c39997a1e9937ed8152b0 - source-url: https://github.com/arduino-libraries/Arduino_NetworkConfigurator.git - version: d887ec0fd15d3d6bd427fa3e2c4f95b582f964a0 + version: f12fc4893ad3b342beca8eb1b55069e173dd78bd # sketch paths to compile (recursive) for all boards UNIVERSAL_SKETCH_PATHS: | - examples/utility/Provisioning_2.0 diff --git a/examples/utility/Provisioning_2.0/Provisioning_2.0.ino b/examples/utility/Provisioning_2.0/Provisioning_2.0.ino index 4f36df3c7..e17b6d9f7 100644 --- a/examples/utility/Provisioning_2.0/Provisioning_2.0.ino +++ b/examples/utility/Provisioning_2.0/Provisioning_2.0.ino @@ -15,7 +15,7 @@ #include #include "utility/LEDFeedback.h" -const char *SKETCH_VERSION = "0.1.1"; +const char *SKETCH_VERSION = "0.1.2"; enum class DeviceState { HARDWARE_CHECK, From 2d4e256732c60d612d7bd644653bcaf5bf39c4d2 Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 13 May 2025 11:28:14 +0200 Subject: [PATCH 5/7] Provisioning v0.1.3 NetworkConfigurator 0.1.1 2000ms full frame animation for UNO R4 First frame reload to fix timings --- .github/workflows/compile-provisioning.yml | 2 +- examples/utility/Provisioning_2.0/Provisioning_2.0.ino | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/compile-provisioning.yml b/.github/workflows/compile-provisioning.yml index 0ccb1a6ff..cddcc98f8 100644 --- a/.github/workflows/compile-provisioning.yml +++ b/.github/workflows/compile-provisioning.yml @@ -40,7 +40,7 @@ jobs: - source-url: https://github.com/arduino-libraries/Arduino_UniqueHWId.git version: 7e1bfeb586cac00f043c39997a1e9937ed8152b0 - source-url: https://github.com/arduino-libraries/Arduino_NetworkConfigurator.git - version: f12fc4893ad3b342beca8eb1b55069e173dd78bd + version: 40285c62a3b50c5241e70fefcd2055495256c275 # sketch paths to compile (recursive) for all boards UNIVERSAL_SKETCH_PATHS: | - examples/utility/Provisioning_2.0 diff --git a/examples/utility/Provisioning_2.0/Provisioning_2.0.ino b/examples/utility/Provisioning_2.0/Provisioning_2.0.ino index e17b6d9f7..28da6e52c 100644 --- a/examples/utility/Provisioning_2.0/Provisioning_2.0.ino +++ b/examples/utility/Provisioning_2.0/Provisioning_2.0.ino @@ -15,7 +15,7 @@ #include #include "utility/LEDFeedback.h" -const char *SKETCH_VERSION = "0.1.2"; +const char *SKETCH_VERSION = "0.1.3"; enum class DeviceState { HARDWARE_CHECK, From 9425e9e108fbde12148f7e4f43985ee426d13b4b Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 20 May 2025 16:04:57 +0200 Subject: [PATCH 6/7] Provisioning v0.2.0 ArduinoIoTCloud 2.5.1 Arduino_ConnectionHandler 1.1.1 Arduino_SecureElement 0.4.0 Arduino_CloudUtils 1.1.0 Arduino_NetworkConfigurator 0.1.3 ArduinoBearSSL 1.7.6 --- .github/workflows/compile-provisioning.yml | 16 ++++++++-------- .../Provisioning_2.0/Provisioning_2.0.ino | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/compile-provisioning.yml b/.github/workflows/compile-provisioning.yml index cddcc98f8..04983b93d 100644 --- a/.github/workflows/compile-provisioning.yml +++ b/.github/workflows/compile-provisioning.yml @@ -32,15 +32,15 @@ jobs: - name: Arduino_KVStore version: 1.0.0 - source-url: https://github.com/arduino-libraries/Arduino_ConnectionHandler.git - version: 0314cf54593029aea05bb8c179e40a26128f7d67 + version: 1.1.1 - source-url: https://github.com/arduino-libraries/Arduino_SecureElement.git - version: 4900febf84435c1a06bb13451bced3bac6f16e76 + version: 0.4.0 - source-url: https://github.com/arduino-libraries/Arduino_CloudUtils.git - version: 2e2facc2209b66905c180ec0058ef8b083912278 + version: 1.1.0 - source-url: https://github.com/arduino-libraries/Arduino_UniqueHWId.git version: 7e1bfeb586cac00f043c39997a1e9937ed8152b0 - source-url: https://github.com/arduino-libraries/Arduino_NetworkConfigurator.git - version: 40285c62a3b50c5241e70fefcd2055495256c275 + version: 0.1.3 # sketch paths to compile (recursive) for all boards UNIVERSAL_SKETCH_PATHS: | - examples/utility/Provisioning_2.0 @@ -98,7 +98,7 @@ jobs: - name: Adafruit SleepyDog Library version: 1.6.5 - source-url: https://github.com/arduino-libraries/ArduinoBearSSL.git - version: a891ad3cb15bca3d080adc8188a63277f92fa81c + version: 1.7.6 - source-url: https://github.com/arduino-libraries/WiFiNINA.git version: 69e786c5c73fe94b7f408853550f6f151cfc58b0 # Portenta @@ -114,7 +114,7 @@ jobs: - name: ArduinoECCX08 version: 1.3.8 - source-url: https://github.com/arduino-libraries/ArduinoBearSSL.git - version: a891ad3cb15bca3d080adc8188a63277f92fa81c + version: 1.7.6 # Nicla Vision - board: type: mbed_nicla @@ -133,7 +133,7 @@ jobs: - name: ArduinoECCX08 version: 1.3.8 - source-url: https://github.com/arduino-libraries/ArduinoBearSSL.git - version: a891ad3cb15bca3d080adc8188a63277f92fa81c + version: 1.7.6 # GIGA - board: type: mbed_giga @@ -145,7 +145,7 @@ jobs: - name: ArduinoECCX08 version: 1.3.8 - source-url: https://github.com/arduino-libraries/ArduinoBearSSL.git - version: a891ad3cb15bca3d080adc8188a63277f92fa81c + version: 1.7.6 # Portenta C33 - board: type: renesas_portenta diff --git a/examples/utility/Provisioning_2.0/Provisioning_2.0.ino b/examples/utility/Provisioning_2.0/Provisioning_2.0.ino index 28da6e52c..c3dc4fccc 100644 --- a/examples/utility/Provisioning_2.0/Provisioning_2.0.ino +++ b/examples/utility/Provisioning_2.0/Provisioning_2.0.ino @@ -15,7 +15,7 @@ #include #include "utility/LEDFeedback.h" -const char *SKETCH_VERSION = "0.1.3"; +const char *SKETCH_VERSION = "0.2.0"; enum class DeviceState { HARDWARE_CHECK, From 900d58d1961648a6492450c1459b1ea314ce7b5d Mon Sep 17 00:00:00 2001 From: fabik111 Date: Thu, 26 Jun 2025 15:16:33 +0200 Subject: [PATCH 7/7] Provisioning v0.2.1 --- .github/workflows/compile-provisioning.yml | 2 +- examples/utility/Provisioning_2.0/Provisioning_2.0.ino | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/compile-provisioning.yml b/.github/workflows/compile-provisioning.yml index 04983b93d..566d704e5 100644 --- a/.github/workflows/compile-provisioning.yml +++ b/.github/workflows/compile-provisioning.yml @@ -40,7 +40,7 @@ jobs: - source-url: https://github.com/arduino-libraries/Arduino_UniqueHWId.git version: 7e1bfeb586cac00f043c39997a1e9937ed8152b0 - source-url: https://github.com/arduino-libraries/Arduino_NetworkConfigurator.git - version: 0.1.3 + version: 0.2.0 # sketch paths to compile (recursive) for all boards UNIVERSAL_SKETCH_PATHS: | - examples/utility/Provisioning_2.0 diff --git a/examples/utility/Provisioning_2.0/Provisioning_2.0.ino b/examples/utility/Provisioning_2.0/Provisioning_2.0.ino index c3dc4fccc..42f52e775 100644 --- a/examples/utility/Provisioning_2.0/Provisioning_2.0.ino +++ b/examples/utility/Provisioning_2.0/Provisioning_2.0.ino @@ -15,7 +15,7 @@ #include #include "utility/LEDFeedback.h" -const char *SKETCH_VERSION = "0.2.0"; +const char *SKETCH_VERSION = "0.2.1"; enum class DeviceState { HARDWARE_CHECK,