Skip to content

Add CI workflows (to be used with ArduinoCore-API integration) #567

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 28 commits into from
Nov 25, 2020
Merged
Changes from 1 commit
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
cc557a4
Add compile example for CI
giulcioffi Sep 1, 2020
2691b30
Use branch namespaced_api_Hardware of ArduinoCore-API
giulcioffi Sep 2, 2020
64f2aee
Disable size-delta-report and use arduino path for compile example step
giulcioffi Sep 2, 2020
3139e35
Use official branch of ArduinoCore-API
giulcioffi Oct 15, 2020
f7c8d00
Add MKRGSM, MKRNB, MKRWAN, WiFi101
giulcioffi Sep 2, 2020
e9e9e8b
Compile all the libraries + WiFi101 from namespaced_api branch
giulcioffi Sep 2, 2020
1a6ef45
Install ArduinoIoTCloud + dependencies from the repository instead of…
giulcioffi Sep 3, 2020
7d18af8
Install Arduino_ConnectionHandler from the repository instead of Boar…
giulcioffi Sep 3, 2020
0ed98c2
Compile LoRa library
giulcioffi Sep 3, 2020
4f861fd
Remove intallation of libraries which are dependencies of ArduinoIoTC…
giulcioffi Sep 4, 2020
c3f8a97
Compile only when a relevant file is modified
giulcioffi Sep 10, 2020
c8693a3
Remove examples from extras and add step to download them
giulcioffi Sep 10, 2020
0bff8ae
Use list mode for sketches
giulcioffi Sep 10, 2020
00dca72
Remove universal libraries entry
giulcioffi Sep 10, 2020
f2dd55a
Remove WiFiNINA step and compile its examples
giulcioffi Sep 10, 2020
2990e4c
Assign a unique type to mkrwifi1010, nano33IoT, mkrwan1310 and mkrNB1500
giulcioffi Sep 10, 2020
6db378e
Remove comments
giulcioffi Sep 10, 2020
d7d471b
Add report-size-delta action + step to upload artifact
giulcioffi Oct 15, 2020
01f3e74
Update names and paths for compile-sketches and report-size-deltas ac…
giulcioffi Oct 16, 2020
b47b2af
Add VidorPeripherals to tesk sketches for MKR Vidor
giulcioffi Nov 23, 2020
da63a92
Use master branch of library WiFi101
giulcioffi Nov 23, 2020
dbf2e79
Use new mkrgsm1400-sketch-paths for MKR GSM1400
giulcioffi Nov 23, 2020
857c994
Update inputs for upload-artifact entries
giulcioffi Nov 23, 2020
0dc7e00
Add WAN attribute to compile also examples from MKRWAN library for MK…
giulcioffi Nov 23, 2020
fb59c13
Remove redundant matrix entry for MKRNB1500
giulcioffi Nov 23, 2020
50d5867
Use release version of Keyboard library
giulcioffi Nov 23, 2020
6769704
Fix wrong core name in a comment
giulcioffi Nov 23, 2020
e62bb96
Mv ArduinoCore-API only if included inplatform
giulcioffi Nov 24, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Add compile example for CI
  • Loading branch information
giulcioffi committed Oct 15, 2020
commit cc557a442b26b31f32af2b616a4a50b4fb1a368a
146 changes: 146 additions & 0 deletions .github/workflows/compile-examples.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
name: Compile Examples

on: [pull_request, push]

jobs:
compile-test:
runs-on: ubuntu-latest

env:
# libraries to install for all boards
UNIVERSAL_LIBRARIES: '"MFRC522" "Keyboard" "Mouse" "Servo" "LiquidCrystal" "CapacitiveSensor"'
# sketch paths to compile (recursive) for all boards
UNIVERSAL_SKETCH_PATHS: '"extras/shared/examples" "libraries/Wire" "libraries/USBHost" "libraries/SPI" "libraries/SFU/examples/SFU_LoadBinary" "libraries/SAMD_AnalogCorrection" "~/Arduino/libraries/Keyboard/examples/Serial" "~/Arduino/libraries/Servo/examples" "~/Arduino/libraries/LiquidCrystal/examples" "~/Arduino/libraries/Ethernet/examples" "~/Arduino/libraries/SD/examples" "~/Arduino/libraries/WiFi/examples" "~/Arduino/libraries/Arduino_LSM9DS1/examples" "~/Arduino/libraries/Arduino_JSON/examples" "~/Arduino/libraries/MFRC522/examples/ChangeUID" "~/Arduino/libraries/MFRC522/examples/DumpInfo" "~/Arduino/libraries/MFRC522/examples/FixBrickedUID" "~/Arduino/libraries/MFRC522/examples/MifareClassicValueBlock" "~/Arduino/libraries/MFRC522/examples/MinimalInterrupt" "~/Arduino/libraries/MFRC522/examples/Ntag216_AUTH" "~/Arduino/libraries/MFRC522/examples/RFID-Cloner" "~/Arduino/libraries/MFRC522/examples/ReadAndWrite" "~/Arduino/libraries/MFRC522/examples/ReadNUID" "~/Arduino/libraries/MFRC522/examples/ReadUidMultiReader" "~/Arduino/libraries/MFRC522/examples/firmware_check" "~/Arduino/libraries/MFRC522/examples/rfid_default_keys" "~/Arduino/libraries/MFRC522/examples/rfid_read_personal_data" "~/Arduino/libraries/MFRC522/examples/rfid_write_personal_data"'

strategy:
fail-fast: false

matrix:
board: [
{"fqbn": "arduino:samd:arduino_zero_edbg", "type": "usb"}, #normal
{"fqbn": "arduino:samd:arduino_zero_native", "type": "usb"},
{"fqbn": "arduino:samd:mkr1000", "type": "usb"},
{"fqbn": "arduino:samd:mkrzero", "type": "usb"},
{"fqbn": "arduino:samd:mkrwifi1010", "type": "mkrwifi_nb1500"},
{"fqbn": "arduino:samd:nano_33_iot", "type": "nano_mkrwan1310"},
{"fqbn": "arduino:samd:mkrfox1200", "type": "usb"},
{"fqbn": "arduino:samd:mkrwan1300", "type": "usb"},
{"fqbn": "arduino:samd:mkrwan1310", "type": "nano_mkrwan1310"},
{"fqbn": "arduino:samd:mkrgsm1400", "type": "usb"},
{"fqbn": "arduino:samd:mkrnb1500", "type": "mkrwifi_nb1500"},
{"fqbn": "arduino:samd:mkrvidor4000", "type": "vidor"},
{"fqbn": "arduino:samd:adafruit_circuitplayground_m0", "type": "adafruit_playg"},
{"fqbn": "arduino:samd:mzero_pro_bl_dbg", "type": "mzero"}, #normal
{"fqbn": "arduino:samd:mzero_pro_bl", "type": "mzero"},
{"fqbn": "arduino:samd:mzero_bl", "type": "mzero"},
{"fqbn": "arduino:samd:tian", "type": "tian"} #,
#{"fqbn": "arduino:samd:tian_cons", "type": "usb"} #normal
]

# make board type-specific customizations to the matrix jobs
include:
# Normal USB boards with all the general libraries
- board:
type: "usb"
additional-sketch-paths: '"~/Arduino/libraries/Firmata/examples/StandardFirmataPlus" "~/Arduino/libraries/Firmata/examples/StandardFirmataEthernet" "~/Arduino/libraries/Firmata/examples/StandardFirmata" "~/Arduino/libraries/Firmata/examples/SimpleDigitalFirmata" "~/Arduino/libraries/Firmata/examples/SimpleAnalogFirmata" "~/Arduino/libraries/Firmata/examples/ServoFirmata" "~/Arduino/libraries/Firmata/examples/EchoString" "~/Arduino/libraries/Firmata/examples/AnalogFirmata" "~/Arduino/libraries/Firmata/examples/AllInputsFirmata" "libraries/I2S/examples" "libraries/SDU/examples"'
# Vidor board
- board:
type: "vidor"
additional-sketch-paths: '"libraries/SAMD_BootloaderUpdater/examples" "libraries/I2S/examples"'
# mkrwifi1010 and mkrnb1500 boards
- board:
type: "mkrwifi_nb1500"
additional-sketch-paths: '"libraries/I2S/examples" "libraries/SDU/examples"'
# nano_33_iot and mkrwan1310 boards
- board:
type: "nano_mkrwan1310"
additional-sketch-paths: "libraries/I2S/examples"
# adafruit_cicrcuitplayground board
- board:
type: "adafruit_playg"
additional-sketch-paths: "libraries/SDU/examples"
# mzero boards
- board:
type: "mzero"
additional-sketch-paths: '"~/Arduino/libraries/Firmata/examples/StandardFirmataPlus" "~/Arduino/libraries/Firmata/examples/StandardFirmataEthernet" "~/Arduino/libraries/Firmata/examples/StandardFirmata" "~/Arduino/libraries/Firmata/examples/SimpleDigitalFirmata" "~/Arduino/libraries/Firmata/examples/SimpleAnalogFirmata" "~/Arduino/libraries/Firmata/examples/ServoFirmata" "~/Arduino/libraries/Firmata/examples/EchoString" "~/Arduino/libraries/Firmata/examples/AnalogFirmata" "~/Arduino/libraries/Firmata/examples/AllInputsFirmata" "libraries/SDU/examples"'
# tian board
- board:
type: "tian"
additional-sketch-paths: '"~/Arduino/libraries/Firmata/examples/StandardFirmataPlus" "~/Arduino/libraries/Firmata/examples/StandardFirmataEthernet" "~/Arduino/libraries/Firmata/examples/StandardFirmata" "~/Arduino/libraries/Firmata/examples/SimpleDigitalFirmata" "~/Arduino/libraries/Firmata/examples/SimpleAnalogFirmata" "~/Arduino/libraries/Firmata/examples/ServoFirmata" "~/Arduino/libraries/Firmata/examples/EchoString" "~/Arduino/libraries/Firmata/examples/AnalogFirmata" "~/Arduino/libraries/Firmata/examples/AllInputsFirmata"'

steps:
- name: Checkout repository
uses: actions/checkout@v2

# The source files are in a subfolder of the ArduinoCore-API repository, so it's not possible to clone it directly to the final destination in the core
- name: Checkout ArduinoCore-API
uses: actions/checkout@v2
with:
repository: arduino/ArduinoCore-API
path: extras/ArduinoCore-API

- name: Install ArduinoCore-API
run: mv "$GITHUB_WORKSPACE/extras/ArduinoCore-API/api" "$GITHUB_WORKSPACE/cores/arduino"

- name: Checkout Adafruit WiFiNINA
uses: actions/checkout@v2
with:
repository: adafruit/WiFiNINA
path: adafruit/WiFiNINA

- name: Compile examples
uses: per1234/actions/libraries/compile-examples@master
with:
fqbn: ${{ matrix.board.fqbn }}
libraries: |
- name: MFRC522
- name: Arduino_MKRMEM
- name: FlashStorage
- source-url: https://github.com/arduino-libraries/Keyboard.git
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm guess that the use of the development version of the Keyboard library is because that version has an example sketch added:
arduino-libraries/Keyboard@a587425

but that example sketch is just a copy/paste of the KeyboardSerial example in the built-in examples:
https://github.com/arduino/arduino-examples/blob/main/examples/09.USB/Keyboard/KeyboardSerial/KeyboardSerial.ino
which the workflow is already configured to compile.

So there would be no loss of coverage from using the release version of the library and removing the ~/Arduino/libraries/Keyboard/examples/Serial path from env.UNIVERSAL_SKETCH_PATHS

- name: Mouse
- name: Servo
- name: LiquidCrystal
- name: CapacitiveSensor
- name: Ethernet
- name: ArduinoBearSSL
- name: Arduino_APDS9960
- name: Servo
- name: Arduino_LSM9DS1
- name: ArduinoHttpClient
- name: NTPClient
- name: TFT
- name: ArduinoMqttClient
- name: Arduino_CRC32
- name: Arduino_LSM6DS3
- name: Stepper
- name: SD
- name: WiFi101
- name: Arduino_JSON
- name: Arduino_HTS221
- name: Firmata
- name: ArduinoMotorCarrier
- name: ArduinoCloudThing
- name: Arduino_DebugUtils
- name: WiFi Link
- name: Arduino_LPS22HB
- name: CTC GO MOTIONS
- name: ArduinoModbus
- name: ArduinoIoTCloudBearSSL
- name: ArduinoDMX
- name: ArduinoRS485
- name: Arduino_OAuth
- name: CTC GO CORE
- name: WiFi
- name: Bridge
- name: Temboo
- name: ArduinoIoTCloud
- name: Madgwick
platforms: |
# Use Board Manager to install the latest release of Arduino megaAVR Boards to get the toolchain
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Use Board Manager to install the latest release of Arduino megaAVR Boards to get the toolchain
# Use Board Manager to install the latest release of Arduino SAMD Boards to get the toolchain

- name: "arduino:samd"
# Overwrite the Board Manager installation with the local platform
- source-path: "./"
name: "arduino:samd"
sketch-paths: "${{ env.UNIVERSAL_SKETCH_PATHS }} ${{ matrix.additional-sketch-paths }}"
enable-size-deltas-report: 'true'
verbose: 'true'