⚙️ Building And Deploying (CI)
This section outlines how pi-topOS software packages are built and deployed (Continuous Integration).
Building
All software installed by pi-top onto pi-topOS is provided as Debian packages, and uses standard Debian packaging tools.
Because some of our software requires code to be compiled for Raspberry Pi's ARM architecture, and the fact that most
CI tools do not offer ARM host machines to build on, pi-top packages are built in a Docker container, leveraging Docker's
buildx
functionality. This allows all packages to be built in an environment that emulates ARM hardware, where needed.
Packages that will work on multiple architectures are built without hardware emulation to speed up builds.
All public GitHub repositories have GitHub Actions for building (and testing, where relevant).
Deploying
At the moment, pi-top packages are deployed to pi-top's apt repository using a private self-hosted Jenkins instance. See the future plans below for how we intend to update the deployment flow.
Future development plans
- Push to apt repositories directly from GitHub repositories
- Build pi-topOS using GitHub Actions
- Migrate to Docker builds
- Provide repositories for all packages deployed to pi-top's apt repository
- Import source using
gbp --import-orig
- Watch upstream for updates via
debian/watch
- Only needs to provide
debian/
and build CI
- Import source using
- Run tests as part of Debian packaging (via
debian/rules
)