Spent a bunch of time building a CI framework targeting the LMIC , in response to Travis CI builds disabled by Travis OSS policy change
Here’s where I am today.
Architecture
- We need to have a CI helper that can be used for a variety of LMIC-based projects. This is somewhat like what Adafruit did with
adafruit/ci-arduino
. However, we need something that can iterate over supported BSPs, boards, regions, and radios. - Thus there’s a new repo,
mcci-catena/mcci-catena-ci
. - We’re still using
bash
-driven builds - We use
arduino-cli
to do the builds (rather than the UI)
Build steps
Here’s what the .yml file for the arduino-lmic
says to do.
Check out the repo
This puts the library at libraries/arduino-lmic
.
Set up mcci-catena-ci
This grabs a copy of mcci-catena-ci
at $TOP/mcci-catena-ci
.
Set up to build
This runs mcci-catena-ci/setup.sh
, which downloads and installs BSPs. For builds other than LMIC, it will have to download and install libraries.
Display structure of checkout
This just runs tree
to show what we have.
Compile Examples
This step goes through all the examples in the library identified by the MCCI_CI_LIBRARY
and builds them.
- if the name of the sketch contains the string “
us915
”, it’s assumed to require a US-like region, so other regions are skipped. - if the sketch contains the string
COMPILE_REGRESSION_TEST
, it’s assumed that it will fail to compile unless that symbol compile; it’s tested both ways for expected results.
Directory Structure pre-build
/home/runner/work/arduino-lmic/arduino-lmic
├── bin
├── libraries
│ └── arduino-lmic
│ ├── assets
│ ├── ci
│ ├── doc
│ ├── examples
│ ├── project_config
│ └── src
└── mcci-catena-ci
Status
Builds run for stm32, samd, esp32, and avr. They fail for the following reasons:
- the Adafruit temperature demo needs a library
- the network time demo needs a library
- the compliance sketch is too big for AVR (can be fixed by fixing device at class A).
Code is checked in on branch issue647.
More to come…