DevOps is never that interesting of a topic. The best outcome of a great solution is that it works and end users are none-the-wiser. Given that, I'll be brief with our setup and point you toward all the pieces as examples.
The idea behind our on-board system build flow is based in docker and follows these steps:
- The Dockerfile for the base image that goes on the Odroid XU4 lives in a separate repo from the main codebase. It auto-builds on DockerHub on push, installing all project dependencies (but not project code).
- A new commit to the Seanmatthews/rowboat1 repo (main codebase) triggers a Travis CI build.
- Travis CI pulls the base image from rowboat/rowboat-base-images:$VERSION, installs and build project code, then pushes a new image to rowboat/rowboat-tested-build:$TRAVIS_BRANCH$TRAVIS_BUILD_NUMBER.
- In order to get the latest project software, an onboard device would pull the latest image from rowboat/rowboat-tested-build.