From 28fa0ba7d3d11bb0135c72f4f9c6bc711164aadb Mon Sep 17 00:00:00 2001 From: per1234 Date: Tue, 20 Apr 2021 06:12:56 -0700 Subject: [PATCH 1/6] Configure Dependabot to check for outdated actions used in workflows Dependabot will periodically check the versions of all actions used in the repository's workflows. If any are found to be outdated, it will submit a pull request to update them. NOTE: Dependabot's PRs will sometimes try to pin to the patch version of the action (e.g., updating `uses: foo/bar@v1` to `uses: foo/bar@v2.3.4`). When the action author has provided a major version ref, use that instead (e.g., `uses: foo/bar@v2`). Dependabot will automatically close its PR once the workflow has been updated. More information: https://docs.github.com/en/github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot --- .github/dependabot.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..03600dd --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +# See: https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates#about-the-dependabotyml-file +version: 2 + +updates: + # Configure check for outdated GitHub Actions actions in workflows. + # See: https://docs.github.com/en/github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot + - package-ecosystem: github-actions + directory: / # Check the repository's workflows under /.github/workflows/ + schedule: + interval: daily From c1684055ea914ad85ec29a180701938c416ea7d7 Mon Sep 17 00:00:00 2001 From: per1234 Date: Tue, 20 Apr 2021 06:13:15 -0700 Subject: [PATCH 2/6] Add CI workflow to check for commonly misspelled words On every push, pull request, and periodically, use the codespell-project/actions-codespell action to check for commonly misspelled words. In the event of a false positive, the problematic word should be added, in all lowercase, to the ignore-words-list field of ./.codespellrc. Regardless of the case of the word in the false positive, it must be in all lowercase in the ignore list. The ignore list is comma-separated with no spaces. --- .codespellrc | 7 +++++++ .github/workflows/spell-check.yml | 22 ++++++++++++++++++++++ README.adoc | 7 ++++++- 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 .codespellrc create mode 100644 .github/workflows/spell-check.yml diff --git a/.codespellrc b/.codespellrc new file mode 100644 index 0000000..101edae --- /dev/null +++ b/.codespellrc @@ -0,0 +1,7 @@ +# See: https://github.com/codespell-project/codespell#using-a-config-file +[codespell] +# In the event of a false positive, add the problematic word, in all lowercase, to a comma-separated list here: +ignore-words-list = , +check-filenames = +check-hidden = +skip = ./.git diff --git a/.github/workflows/spell-check.yml b/.github/workflows/spell-check.yml new file mode 100644 index 0000000..01bee87 --- /dev/null +++ b/.github/workflows/spell-check.yml @@ -0,0 +1,22 @@ +name: Spell Check + +# See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows +on: + push: + pull_request: + schedule: + # Run every Tuesday at 8 AM UTC to catch new misspelling detections resulting from dictionary updates. + - cron: "0 8 * * TUE" + workflow_dispatch: + repository_dispatch: + +jobs: + spellcheck: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Spell check + uses: codespell-project/actions-codespell@master diff --git a/README.adoc b/README.adoc index 85eaab2..3680243 100644 --- a/README.adoc +++ b/README.adoc @@ -1,4 +1,9 @@ -= Arduino_ScienceJournal Library for Arduino = +:repository-owner: arduino-libraries +:repository-name: Arduino_ScienceJournal + += {repository-name} Library for Arduino = + +image:https://github.com/{repository-owner}/{repository-name}/actions/workflows/spell-check.yml/badge.svg["Spell Check status", link="https://github.com/{repository-owner}/{repository-name}/actions/workflows/spell-check.yml"] Firmware for the Physics Lab kit and the Arduino Nano 33 BLE Sense. From 9c064d82b303dfef5c8f0e0157b0439a2f4cb741 Mon Sep 17 00:00:00 2001 From: per1234 Date: Tue, 20 Apr 2021 06:25:38 -0700 Subject: [PATCH 3/6] Correct typos in comments and documentation --- examples/PhysicsLabFirmware/PhysicsLabFirmware.ino | 6 +++--- extras/BLE_spec BLE Sense Firmware.txt | 4 ++-- extras/BLE_spec MKR Science Kit Firmware.txt | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/PhysicsLabFirmware/PhysicsLabFirmware.ino b/examples/PhysicsLabFirmware/PhysicsLabFirmware.ino index f043e49..66127d9 100644 --- a/examples/PhysicsLabFirmware/PhysicsLabFirmware.ino +++ b/examples/PhysicsLabFirmware/PhysicsLabFirmware.ino @@ -81,13 +81,13 @@ void setup() { digitalWrite(RESISTANCE_AUX_PIN, LOW); if (!INA226.begin(0x45)) { - Serial.println("Failled to initialized INA226!"); + Serial.println("Failed to initialized INA226!"); while (1); } if (!imu.begin()) { - Serial.println("Failled to initialized IMU!"); + Serial.println("Failed to initialized IMU!"); while (1); } @@ -97,7 +97,7 @@ void setup() { imu.setupGyro(imu.LSM9DS1_GYROSCALE_245DPS); if (!BLE.begin()) { - Serial.println("Failled to initialized BLE!"); + Serial.println("Failed to initialized BLE!"); while (1); } diff --git a/extras/BLE_spec BLE Sense Firmware.txt b/extras/BLE_spec BLE Sense Firmware.txt index e9d7530..4b19f06 100644 --- a/extras/BLE_spec BLE Sense Firmware.txt +++ b/extras/BLE_spec BLE Sense Firmware.txt @@ -1,10 +1,10 @@ BLE Sense - BLE specifications.txt ================================== -GAP (Adversisement) +GAP (Advertisement) ------------------- Local name: BLESense - -Serivice UUID: 555a0002-0000-467a-9538-01f0652c74e8 +Service UUID: 555a0002-0000-467a-9538-01f0652c74e8 GATT diff --git a/extras/BLE_spec MKR Science Kit Firmware.txt b/extras/BLE_spec MKR Science Kit Firmware.txt index 7611641..cd7f04d 100644 --- a/extras/BLE_spec MKR Science Kit Firmware.txt +++ b/extras/BLE_spec MKR Science Kit Firmware.txt @@ -2,10 +2,10 @@ MKR Science Kit Firmware - BLE specifications.txt ================================================= -GAP (Adversisement) +GAP (Advertisement) ------------------- Local name: MKRSci -Serivice UUID: 555a0001-0000-467a-9538-01f0652c74e8 +Service UUID: 555a0001-0000-467a-9538-01f0652c74e8 GATT @@ -114,7 +114,7 @@ UUID: 555a0001-5001-467a-9538-01f0652c74e8 Properties: notify Value size: 12 bytes Data format: Array of 3 x 32-bit IEEE floats (little endian) -Description: X, Y, Z acceleration values in G's, if subscribed notification sent every 10 ms +Description: X, Y, Z acceleration values in g's, if subscribed notification sent every 10 ms Gyroscope Characteristic ~~~~~~~~~~~~~~~~~~~~~~~~ From c8159b17ea88fe6c88e96d4264d19593ea5d4f5c Mon Sep 17 00:00:00 2001 From: per1234 Date: Tue, 20 Apr 2021 06:26:05 -0700 Subject: [PATCH 4/6] Add CI workflow to do Arduino project-specific linting On every push, pull request, and periodically, run Arduino Lint to check for common problems not related to the project code. --- .github/workflows/check-arduino.yml | 28 ++++++++++++++++++++++++++++ README.adoc | 1 + 2 files changed, 29 insertions(+) create mode 100644 .github/workflows/check-arduino.yml diff --git a/.github/workflows/check-arduino.yml b/.github/workflows/check-arduino.yml new file mode 100644 index 0000000..0d969f6 --- /dev/null +++ b/.github/workflows/check-arduino.yml @@ -0,0 +1,28 @@ +name: Check Arduino + +# See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows +on: + push: + pull_request: + schedule: + # Run every Tuesday at 8 AM UTC to catch breakage caused by new rules added to Arduino Lint. + - cron: "0 8 * * TUE" + workflow_dispatch: + repository_dispatch: + +jobs: + lint: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Arduino Lint + uses: arduino/arduino-lint-action@v1 + with: + compliance: specification + library-manager: update + # Always use this setting for official repositories. Remove for 3rd party projects. + official: true + project-type: library diff --git a/README.adoc b/README.adoc index 3680243..33462ad 100644 --- a/README.adoc +++ b/README.adoc @@ -3,6 +3,7 @@ = {repository-name} Library for Arduino = +image:https://github.com/{repository-owner}/{repository-name}/actions/workflows/check-arduino.yml/badge.svg["Check Arduino status", link="https://github.com/{repository-owner}/{repository-name}/actions/workflows/check-arduino.yml"] image:https://github.com/{repository-owner}/{repository-name}/actions/workflows/spell-check.yml/badge.svg["Spell Check status", link="https://github.com/{repository-owner}/{repository-name}/actions/workflows/spell-check.yml"] Firmware for the Physics Lab kit and the Arduino Nano 33 BLE Sense. From e5b22ad6012023d45a3affbd50b743107e65975c Mon Sep 17 00:00:00 2001 From: per1234 Date: Tue, 20 Apr 2021 06:26:49 -0700 Subject: [PATCH 5/6] Add "smoke test" examples compilation CI workflow On every push or pull request that affects library source or example files, and periodically, compile all example sketches for the specified boards. --- .github/workflows/compile-examples.yml | 66 ++++++++++++++++++++++++++ README.adoc | 1 + 2 files changed, 67 insertions(+) create mode 100644 .github/workflows/compile-examples.yml diff --git a/.github/workflows/compile-examples.yml b/.github/workflows/compile-examples.yml new file mode 100644 index 0000000..ef8ab7a --- /dev/null +++ b/.github/workflows/compile-examples.yml @@ -0,0 +1,66 @@ +name: Compile Examples + +# See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows +on: + push: + paths: + - ".github/workflows/compile-examples.yml" + - "library.properties" + - "examples/**" + - "src/**" + pull_request: + paths: + - ".github/workflows/compile-examples.yml" + - "library.properties" + - "examples/**" + - "src/**" + schedule: + # Run every Tuesday at 8 AM UTC to catch breakage caused by changes to external resources (libraries, platforms). + - cron: "0 8 * * TUE" + workflow_dispatch: + repository_dispatch: + +jobs: + build: + name: ${{ matrix.board.fqbn }} + runs-on: ubuntu-latest + + strategy: + fail-fast: false + + matrix: + board: + - fqbn: arduino:mbed_nano:nano33ble + platforms: | + - name: arduino:mbed_nano + libraries: | + - name: Arduino_APDS9960 + - name: Arduino_HTS221 + - name: Arduino_LPS22HB + - name: Arduino_LSM9DS1 + sketch-paths: examples/Nano33BLESenseFirmware + - fqbn: arduino:samd:mkrwifi1010 + platforms: | + - name: arduino:samd + libraries: | + - name: ArduinoBLE + - name: Adafruit LSM9DS1 Library + sketch-paths: examples/PhysicsLabFirmware + + 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: ${{ matrix.board.platforms }} + libraries: | + # Install the library from the local path. + - source-path: ./ + # Board-specific library dependencies + ${{ matrix.board.libraries }} + sketch-paths: | + ${{ matrix.board.sketch-paths }} diff --git a/README.adoc b/README.adoc index 33462ad..1588e74 100644 --- a/README.adoc +++ b/README.adoc @@ -4,6 +4,7 @@ = {repository-name} Library for Arduino = image:https://github.com/{repository-owner}/{repository-name}/actions/workflows/check-arduino.yml/badge.svg["Check Arduino status", link="https://github.com/{repository-owner}/{repository-name}/actions/workflows/check-arduino.yml"] +image:https://github.com/{repository-owner}/{repository-name}/actions/workflows/compile-examples.yml/badge.svg["Compile Examples status", link="https://github.com/{repository-owner}/{repository-name}/actions/workflows/compile-examples.yml"] image:https://github.com/{repository-owner}/{repository-name}/actions/workflows/spell-check.yml/badge.svg["Spell Check status", link="https://github.com/{repository-owner}/{repository-name}/actions/workflows/spell-check.yml"] Firmware for the Physics Lab kit and the Arduino Nano 33 BLE Sense. From 8d2917e905f0c953d3b722fe02cbca209661315f Mon Sep 17 00:00:00 2001 From: per1234 Date: Tue, 20 Apr 2021 06:27:07 -0700 Subject: [PATCH 6/6] Report changes in memory usage that would result from merging a PR On creation or commit to a pull request, a report of the resulting change in memory usage of the examples will be commented to the PR thread. --- .github/workflows/compile-examples.yml | 12 ++++++++++++ .github/workflows/report-size-deltas.yml | 24 ++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 .github/workflows/report-size-deltas.yml diff --git a/.github/workflows/compile-examples.yml b/.github/workflows/compile-examples.yml index ef8ab7a..b1f8e0f 100644 --- a/.github/workflows/compile-examples.yml +++ b/.github/workflows/compile-examples.yml @@ -25,6 +25,9 @@ jobs: name: ${{ matrix.board.fqbn }} runs-on: ubuntu-latest + env: + SKETCHES_REPORTS_PATH: sketches-reports + strategy: fail-fast: false @@ -64,3 +67,12 @@ jobs: ${{ matrix.board.libraries }} sketch-paths: | ${{ matrix.board.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 }} diff --git a/.github/workflows/report-size-deltas.yml b/.github/workflows/report-size-deltas.yml new file mode 100644 index 0000000..652be5d --- /dev/null +++ b/.github/workflows/report-size-deltas.yml @@ -0,0 +1,24 @@ +name: Report Size Deltas + +# See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows +on: + push: + paths: + - ".github/workflows/report-size-deltas.yml" + schedule: + # Run at the minimum interval allowed by GitHub Actions. + # Note: GitHub Actions periodically has outages which result in workflow failures. + # In this event, the workflows will start passing again once the service recovers. + - cron: "*/5 * * * *" + workflow_dispatch: + repository_dispatch: + +jobs: + report: + runs-on: ubuntu-latest + steps: + - 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