Progress on CI testing with Github actions

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.


  • 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/, 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

├── bin
├── libraries
│   └── arduino-lmic
│       ├── assets
│       ├── ci
│       ├── doc
│       ├── examples
│       ├── project_config
│       └── src
└── mcci-catena-ci


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…

Getting close:

The errors in the STM32 builds are artifacts of the conversion. I just pushed another update, and it’s possible that we’ll have a clean build. I’ll merge as soon as we do.

Conclusion so far: this was a lot of work – twenty hours or so of work. But GitHub actions are certainly better than Travis, and this also ought to work on a gitlab runner or a github runner. So it’s good for the project.

Code is merged to main branch.

1 Like