diff options
author | Martino Facchin <m.facchin@arduino.cc> | 2021-05-26 15:50:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-26 15:50:02 +0200 |
commit | 24e6edd475c287cdafee0a4db2eb98927ce3cf58 (patch) | |
tree | b3251605dc629e3bbc8ab899b4f4ffe66b1e1e98 /.github | |
parent | 1ac42f7ac0c365cfa4d901889ff6d4c23d3b4796 (diff) | |
parent | 20dc2e532e5cecd17a7f463cf86541d87e5090e8 (diff) |
Merge pull request #413 from per1234/ci
Use GitHub Actions for continuous integration
Diffstat (limited to '.github')
-rw-r--r-- | .github/dependabot.yml | 10 | ||||
-rw-r--r-- | .github/workflows/check-arduino.yml | 27 | ||||
-rw-r--r-- | .github/workflows/compile-platform-examples.yml | 206 | ||||
-rw-r--r-- | .github/workflows/report-size-deltas.yml | 24 | ||||
-rw-r--r-- | .github/workflows/spell-check.yml | 22 |
5 files changed, 289 insertions, 0 deletions
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 diff --git a/.github/workflows/check-arduino.yml b/.github/workflows/check-arduino.yml new file mode 100644 index 0000000..cfffb75 --- /dev/null +++ b/.github/workflows/check-arduino.yml @@ -0,0 +1,27 @@ +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 + # Always use this setting for official repositories. Remove for 3rd party projects. + official: true + project-type: platform diff --git a/.github/workflows/compile-platform-examples.yml b/.github/workflows/compile-platform-examples.yml new file mode 100644 index 0000000..8e8f5b5 --- /dev/null +++ b/.github/workflows/compile-platform-examples.yml @@ -0,0 +1,206 @@ +name: Compile Examples + +# See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows +on: + push: + paths: + - ".github/workflows/compile-platform-examples.ya?ml" + - "cores/**" + - "libraries/**" + - "variants/**" + - "boards.txt" + - "platform.txt" + pull_request: + paths: + - ".github/workflows/compile-platform-examples.ya?ml" + - "cores/**" + - "libraries/**" + - "variants/**" + - "boards.txt" + - "platform.txt" + workflow_dispatch: + repository_dispatch: + +jobs: + build: + name: ${{ matrix.board.fqbn }} + runs-on: ubuntu-latest + + env: + SKETCHES_REPORTS_PATH: sketches-reports + + strategy: + fail-fast: false + + matrix: + board: + - fqbn: arduino:avr:yun + serial: true + softwareserial: true + - fqbn: arduino:avr:uno + serial: true + softwareserial: true + - fqbn: arduino:avr:diecimila:cpu=atmega328 + serial: true + softwareserial: true + - fqbn: arduino:avr:diecimila:cpu=atmega168 + serial: true + softwareserial: true + - fqbn: arduino:avr:nano:cpu=atmega328 + serial: true + softwareserial: true + - fqbn: arduino:avr:nano:cpu=atmega328old + serial: true + softwareserial: true + - fqbn: arduino:avr:nano:cpu=atmega168 + serial: true + softwareserial: true + - fqbn: arduino:avr:mega:cpu=atmega2560 + serial: true + softwareserial: true + - fqbn: arduino:avr:mega:cpu=atmega1280 + serial: true + softwareserial: true + - fqbn: arduino:avr:megaADK + serial: true + softwareserial: true + - fqbn: arduino:avr:leonardo + serial: true + softwareserial: true + - fqbn: arduino:avr:leonardoeth + serial: true + softwareserial: true + - fqbn: arduino:avr:micro + serial: true + softwareserial: true + - fqbn: arduino:avr:esplora + serial: true + softwareserial: true + - fqbn: arduino:avr:mini:cpu=atmega328 + serial: true + softwareserial: true + - fqbn: arduino:avr:mini:cpu=atmega168 + serial: true + softwareserial: true + - fqbn: arduino:avr:ethernet + serial: true + softwareserial: true + - fqbn: arduino:avr:fio + serial: true + softwareserial: true + - fqbn: arduino:avr:bt:cpu=atmega328 + serial: true + softwareserial: true + - fqbn: arduino:avr:bt:cpu=atmega168 + serial: true + softwareserial: true + - fqbn: arduino:avr:LilyPadUSB + serial: true + softwareserial: true + - fqbn: arduino:avr:lilypad:cpu=atmega328 + serial: true + softwareserial: true + - fqbn: arduino:avr:lilypad:cpu=atmega168 + serial: true + softwareserial: true + - fqbn: arduino:avr:pro:cpu=16MHzatmega328 + serial: true + softwareserial: true + - fqbn: arduino:avr:pro:cpu=8MHzatmega328 + serial: true + softwareserial: true + - fqbn: arduino:avr:pro:cpu=16MHzatmega168 + serial: true + softwareserial: true + - fqbn: arduino:avr:pro:cpu=8MHzatmega168 + serial: true + softwareserial: true + - fqbn: arduino:avr:atmegang:cpu=atmega168 + serial: true + softwareserial: true + - fqbn: arduino:avr:atmegang:cpu=atmega8 + serial: true + softwareserial: false + - fqbn: arduino:avr:robotControl + serial: true + softwareserial: false + - fqbn: arduino:avr:robotMotor + serial: true + softwareserial: false + - fqbn: arduino:avr:gemma + serial: false + softwareserial: false + - fqbn: arduino:avr:circuitplay32u4cat + serial: true + softwareserial: true + - fqbn: arduino:avr:yunmini + serial: true + softwareserial: true + - fqbn: arduino:avr:chiwawa + serial: true + softwareserial: true + - fqbn: arduino:avr:one + serial: true + softwareserial: true + - fqbn: arduino:avr:unowifi + serial: true + softwareserial: true + + # Make board type-specific customizations to the matrix jobs + include: + - board: + # Boards with Serial interface + serial: true + # Compile these sketches in addition to the ones compiled for all boards + serial-sketch-paths: | + - libraries/EEPROM/examples/eeprom_crc + - libraries/EEPROM/examples/eeprom_get + - libraries/EEPROM/examples/eeprom_put + - libraries/EEPROM/examples/eeprom_read + - libraries/SPI + - libraries/Wire + - board: + serial: false + serial-sketch-paths: "" + - board: + # Boards compatible with the SoftwareSerial library + softwareserial: true + softwareserial-sketch-paths: | + - libraries/SoftwareSerial + - board: + softwareserial: false + softwareserial-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: | + # Use Boards Manager to install the latest release of the platform to get the toolchain. + - name: arduino:avr + # Overwrite the Boards Manager installation with the platform from the repository. + - source-path: ./ + name: arduino:avr + sketch-paths: | + # Compile these sketches for all boards + - libraries/EEPROM/examples/eeprom_clear + - libraries/EEPROM/examples/eeprom_iteration + - libraries/EEPROM/examples/eeprom_update + - libraries/EEPROM/examples/eeprom_write + # Board-specific sketches + ${{ matrix.serial-sketch-paths }} + ${{ matrix.softwareserial-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 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 |