From d4c97145381eb6ef23540342088ad0f838ab0202 Mon Sep 17 00:00:00 2001 From: per1234 Date: Sun, 11 Apr 2021 03:46:36 -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 6b42a95c387f799458e13d704ebe99fb278fc7c2 Mon Sep 17 00:00:00 2001 From: per1234 Date: Sun, 11 Apr 2021 03:46:56 -0700 Subject: [PATCH 2/6] Update 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 ++++++++++++++++++++++ .travis.yml | 11 ----------- README.md | 2 ++ extras/codespell-ignore-words-list.txt | 0 5 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 .codespellrc create mode 100644 .github/workflows/spell-check.yml delete mode 100644 extras/codespell-ignore-words-list.txt 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/.travis.yml b/.travis.yml index 8c6cbef..a9821b7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,17 +10,6 @@ matrix: - BOARD="arduino:samd:mkrwifi1010" - env: - BOARD="arduino:samd:mkrgsm1400" - - env: - - NAME=Spell Check - language: python - python: 3.6 - # must define an empty before_install phase, otherwise the default one is used - before_install: true - install: - # https://github.com/codespell-project/codespell - - pip install codespell - script: - - codespell --skip="${TRAVIS_BUILD_DIR}/.git" --ignore-words="${TRAVIS_BUILD_DIR}/extras/codespell-ignore-words-list.txt" "${TRAVIS_BUILD_DIR}" # default phases before_install: - wget http://downloads.arduino.cc/arduino-cli/arduino-cli-$CLI_VERSION-linux64.tar.bz2 diff --git a/README.md b/README.md index 32a5558..8f21f21 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ Arduino_DebugUtils ================== +[![Spell Check status](https://github.com/arduino-libraries/Arduino_DebugUtils/actions/workflows/spell-check.yml/badge.svg)](https://github.com/arduino-libraries/Arduino_DebugUtils/actions/workflows/spell-check.yml) + This class provides functionality useful for debugging sketches via `printf`-style statements. # How-To-Use Basic diff --git a/extras/codespell-ignore-words-list.txt b/extras/codespell-ignore-words-list.txt deleted file mode 100644 index e69de29..0000000 From fd56e62cd4903625df4bd244d8d3dcb1c3283652 Mon Sep 17 00:00:00 2001 From: per1234 Date: Sun, 11 Apr 2021 03:57:58 -0700 Subject: [PATCH 3/6] Correct typos in comments and documentation --- README.md | 2 +- examples/Arduino_Debug_Advance/Arduino_Debug_Advance.ino | 9 +++++---- src/Arduino_DebugUtils.cpp | 2 +- src/Arduino_DebugUtils.h | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 8f21f21..c2e17e3 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ float pi = 3.1459; Debug.print(DBG_VERBOSE, "i = %d, pi = %f", i, pi); ``` -If desired timestamps can be prefixed to the debug message. Timestamp output can be enabled and disabled via `timestampOn` and `timestampOff`. +If desired, timestamps can be prefixed to the debug message. Timestamp output can be enabled and disabled via `timestampOn` and `timestampOff`. # How-To-Use Advanced Normally all debug output is redirected to the primary serial output of each board (`Serial`). In case you want to redirect the output to another output stream you can make use of `setDebugOutputStream(&Serial2)`. diff --git a/examples/Arduino_Debug_Advance/Arduino_Debug_Advance.ino b/examples/Arduino_Debug_Advance/Arduino_Debug_Advance.ino index 5ebbcc1..5837b52 100644 --- a/examples/Arduino_Debug_Advance/Arduino_Debug_Advance.ino +++ b/examples/Arduino_Debug_Advance/Arduino_Debug_Advance.ino @@ -1,11 +1,12 @@ /* Advanced Debug can be helpful in embedded applications when - there are more that two microcontrollers connected serially + there are more than two microcontrollers connected serially or a wireless sensor like XBee is connected to the serial port - that will send data wirelessly to other XBee node. + that will send data wirelessly to other XBee nodes. - In boards like Arduino Nano, UNO, MEGA only one serial port is available, - therefore additional Software Serial ports can be made using SoftwareSerial + In boards like Arduino Nano, UNO, or MEGA only one serial port is available, + therefore additional software serial ports can be made using the + SoftwareSerial library. */ #include "Arduino_DebugUtils.h" diff --git a/src/Arduino_DebugUtils.cpp b/src/Arduino_DebugUtils.cpp index 63c9444..f1f9440 100644 --- a/src/Arduino_DebugUtils.cpp +++ b/src/Arduino_DebugUtils.cpp @@ -120,4 +120,4 @@ bool Arduino_DebugUtils::shouldPrint(int const debug_level) const Arduino_DebugUtils Debug; void setDebugMessageLevel(int const debug_level) { Debug.setDebugLevel(debug_level); -} \ No newline at end of file +} diff --git a/src/Arduino_DebugUtils.h b/src/Arduino_DebugUtils.h index bfbb41d..a44b5ac 100644 --- a/src/Arduino_DebugUtils.h +++ b/src/Arduino_DebugUtils.h @@ -78,4 +78,4 @@ class Arduino_DebugUtils { extern Arduino_DebugUtils Debug; -#endif /* ARDUINO_DEBUG_UTILS_H_ */ \ No newline at end of file +#endif /* ARDUINO_DEBUG_UTILS_H_ */ From 9967a0f980c77e2435e99627d8f30a5c5d4d2fe0 Mon Sep 17 00:00:00 2001 From: per1234 Date: Sun, 11 Apr 2021 03:58:19 -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.md | 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.md b/README.md index c2e17e3..2a54b7d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ Arduino_DebugUtils ================== +[![Check Arduino status](https://github.com/arduino-libraries/Arduino_DebugUtils/actions/workflows/check-arduino.yml/badge.svg)](https://github.com/arduino-libraries/Arduino_DebugUtils/actions/workflows/check-arduino.yml) [![Spell Check status](https://github.com/arduino-libraries/Arduino_DebugUtils/actions/workflows/spell-check.yml/badge.svg)](https://github.com/arduino-libraries/Arduino_DebugUtils/actions/workflows/spell-check.yml) This class provides functionality useful for debugging sketches via `printf`-style statements. From 5782bb6691fe705e080c283684a8d0b79caaad6b Mon Sep 17 00:00:00 2001 From: per1234 Date: Sun, 11 Apr 2021 03:59:53 -0700 Subject: [PATCH 5/6] Update "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 | 101 +++++++++++++++++++++++++ .travis.yml | 35 --------- README.md | 1 + 3 files changed, 102 insertions(+), 35 deletions(-) create mode 100644 .github/workflows/compile-examples.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/compile-examples.yml b/.github/workflows/compile-examples.yml new file mode 100644 index 0000000..9032dfb --- /dev/null +++ b/.github/workflows/compile-examples.yml @@ -0,0 +1,101 @@ +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" + - "examples/**" + - "src/**" + pull_request: + paths: + - ".github/workflows/compile-examples.yml" + - "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:avr:nano + platforms: | + - name: arduino:avr + softwareserial: true + - fqbn: arduino:avr:mega + platforms: | + - name: arduino:avr + softwareserial: true + - fqbn: arduino:avr:leonardo + platforms: | + - name: arduino:avr + softwareserial: true + - fqbn: arduino:megaavr:nona4809 + platforms: | + - name: arduino:megaavr + softwareserial: true + - fqbn: arduino:sam:arduino_due_x_dbg + platforms: | + - name: arduino:sam + softwareserial: false + - fqbn: arduino:samd:mkrzero + platforms: | + - name: arduino:samd + softwareserial: false + - fqbn: arduino:mbed_portenta:envie_m4 + platforms: | + - name: arduino:mbed_portenta + softwareserial: false + - fqbn: arduino:mbed_portenta:envie_m7 + platforms: | + - name: arduino:mbed_portenta + softwareserial: false + - fqbn: arduino:mbed_nano:nano33ble + platforms: | + - name: arduino:mbed_nano + softwareserial: false + - fqbn: arduino:mbed_nano:nanorp2040connect + platforms: | + - name: arduino:mbed_nano + softwareserial: false + + # Make board type-specific customizations to the matrix jobs + include: + - board: + # Boards with a SoftwareSerial library + softwareserial: true + # Compile these sketches in addition to the ones defined by env.UNIVERSAL_SKETCH_PATHS + sketch-paths: | + - examples/Arduino_Debug_Advance + - board: + softwareserial: false + 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: ${{ matrix.board.platforms }} + libraries: | + # Install the library from the local path. + - source-path: ./ + # Additional library dependencies can be listed here. + # See: https://github.com/arduino/compile-sketches#libraries + sketch-paths: | + - examples/Arduino_Debug_Basic + ${{ matrix.sketch-paths }} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index a9821b7..0000000 --- a/.travis.yml +++ /dev/null @@ -1,35 +0,0 @@ -language: generic -env: - global: - - CLI_VERSION=latest -matrix: - include: - - env: - - BOARD="arduino:samd:mkr1000" - - env: - - BOARD="arduino:samd:mkrwifi1010" - - env: - - BOARD="arduino:samd:mkrgsm1400" -# default phases -before_install: - - wget http://downloads.arduino.cc/arduino-cli/arduino-cli-$CLI_VERSION-linux64.tar.bz2 - - tar xf arduino-cli-$CLI_VERSION-linux64.tar.bz2 - - mkdir -p "$HOME/bin" - - mv arduino-cli $HOME/bin - - export PATH="$PATH:$HOME/bin" - - arduino-cli core update-index - - if [[ "$BOARD" =~ "arduino:samd:" ]]; then - arduino-cli core install arduino:samd; - fi - - buildExampleSketch() { arduino-cli compile --warnings all --fqbn $BOARD $PWD/examples/$1; } -install: - - mkdir -p $HOME/Arduino/libraries - - ln -s $PWD $HOME/Arduino/libraries/. -script: - - buildExampleSketch Arduino_Debug_Basic -notifications: - webhooks: - urls: - - https://www.travisbuddy.com/ - on_success: never - on_failure: always diff --git a/README.md b/README.md index 2a54b7d..5156760 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ Arduino_DebugUtils ================== [![Check Arduino status](https://github.com/arduino-libraries/Arduino_DebugUtils/actions/workflows/check-arduino.yml/badge.svg)](https://github.com/arduino-libraries/Arduino_DebugUtils/actions/workflows/check-arduino.yml) +[![Compile Examples status](https://github.com/arduino-libraries/Arduino_DebugUtils/actions/workflows/compile-examples.yml/badge.svg)](https://github.com/arduino-libraries/Arduino_DebugUtils/actions/workflows/compile-examples.yml) [![Spell Check status](https://github.com/arduino-libraries/Arduino_DebugUtils/actions/workflows/spell-check.yml/badge.svg)](https://github.com/arduino-libraries/Arduino_DebugUtils/actions/workflows/spell-check.yml) This class provides functionality useful for debugging sketches via `printf`-style statements. From d5471eb266e20f818d31b379c4d6cfd52bf82ba2 Mon Sep 17 00:00:00 2001 From: per1234 Date: Sun, 11 Apr 2021 04:00:18 -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 9032dfb..746839e 100644 --- a/.github/workflows/compile-examples.yml +++ b/.github/workflows/compile-examples.yml @@ -23,6 +23,9 @@ jobs: name: ${{ matrix.board.fqbn }} runs-on: ubuntu-latest + env: + SKETCHES_REPORTS_PATH: sketches-reports + strategy: fail-fast: false @@ -99,3 +102,12 @@ jobs: sketch-paths: | - examples/Arduino_Debug_Basic ${{ matrix.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